home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / editor / be300.zip / BINGO.DOC < prev    next >
Text File  |  1992-10-18  |  336KB  |  8,767 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                        The Bingo Programmer's Text Editor
  11.                                A Shareware Product
  12.                                   Version 3.00
  13.  
  14.  
  15.                                 Reference Manual
  16.                                Copyright 1989,1992
  17.                             Christopher R. S. Schanck
  18.  
  19.  
  20.                                 October 17, 1992
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.                                             _______
  47.                                        ____|__     |               (R)
  48.                                     --|       |    |-------------------
  49.                                       |   ____|__  |  Association of
  50.                                       |  |       |_|  Shareware
  51.                                       |__|   o   |    Professionals
  52.                                     -----|   |   |---------------------
  53.                                          |___|___|    MEMBER
  54.  
  55.  
  56.  
  57.  
  58.  
  59.                                 Table of Contents
  60.                                 -----------------
  61.  
  62.      Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . .    1
  63.           Philosophy . . . . . . . . . . . . . . . . . . . . . . . . .    2
  64.           The Association of Shareware Professionals . . . . . . . . .    4
  65.           The Shareware Concept and Registering  . . . . . . . . . . .    5
  66.           Ordering Direct & PsL Shareware Registration . . . . . . . .    6
  67.           Things to Possibly Come  . . . . . . . . . . . . . . . . . .    7
  68.           Support  . . . . . . . . . . . . . . . . . . . . . . . . . .    8
  69.           CompuServe . . . . . . . . . . . . . . . . . . . . . . . . .    9
  70.           Getting the Latest Version . . . . . . . . . . . . . . . . .   10
  71.           Using this Manual  . . . . . . . . . . . . . . . . . . . . .   11
  72.  
  73.      Overview  . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
  74.           Installing Bingo . . . . . . . . . . . . . . . . . . . . . .   12
  75.           BOPTS: The External Config Utility . . . . . . . . . . . . .   13
  76.                # of Buckets & Bucketsize . . . . . . . . . . . . . . .   13
  77.                Chess Stack Size  . . . . . . . . . . . . . . . . . . .   13
  78.                Chess # of Variables  . . . . . . . . . . . . . . . . .   13
  79.                Chess # of Functions  . . . . . . . . . . . . . . . . .   13
  80.                Scramble Registration Name  . . . . . . . . . . . . . .   14
  81.           Bingo & Virtual Memory . . . . . . . . . . . . . . . . . . .   15
  82.                Impact of Virtual Memory on Performance . . . . . . . .   15
  83.           KEYCFG: The Keyboard Configuration Program . . . . . . . . .   17
  84.                Key Names . . . . . . . . . . . . . . . . . . . . . . .   17
  85.                Section 1 -- Key Assignments  . . . . . . . . . . . . .   19
  86.                     'open_end' Key Identifier  . . . . . . . . . . . .   20
  87.                     'cur_file' Key Identifier  . . . . . . . . . . . .   21
  88.                     'interpret' Function Identifier  . . . . . . . . .   21
  89.                Section 2 - Chess Code  . . . . . . . . . . . . . . . .   21
  90.                KEYCFG Command Line Options . . . . . . . . . . . . . .   21
  91.           The KEYINFO Key Information Utility  . . . . . . . . . . . .   22
  92.           Starting Bingo . . . . . . . . . . . . . . . . . . . . . . .   23
  93.           The BINGO.INI file . . . . . . . . . . . . . . . . . . . . .   24
  94.           Bingo and Larger Screen Displays . . . . . . . . . . . . . .   25
  95.           Bingo's Menu System  . . . . . . . . . . . . . . . . . . . .   26
  96.           Bingo's User Interface . . . . . . . . . . . . . . . . . . .   27
  97.                String Entry Boxes  . . . . . . . . . . . . . . . . . .   27
  98.                Yes/No Boxes  . . . . . . . . . . . . . . . . . . . . .   28
  99.                Non-Editable Display Boxes  . . . . . . . . . . . . . .   29
  100.                List-Picking Boxes  . . . . . . . . . . . . . . . . . .   29
  101.           Directory Lister . . . . . . . . . . . . . . . . . . . . . .   30
  102.           Bingo and File Names . . . . . . . . . . . . . . . . . . . .   31
  103.           The Status Line  . . . . . . . . . . . . . . . . . . . . . .   32
  104.           Bingo & The Mouse  . . . . . . . . . . . . . . . . . . . . .   33
  105.                The Mouse Cursor  . . . . . . . . . . . . . . . . . . .   33
  106.                The Mouse at the General Editing Level  . . . . . . . .   33
  107.                The Mouse and The Menus . . . . . . . . . . . . . . . .   35
  108.                The Mouse & Dialogue Boxes  . . . . . . . . . . . . . .   36
  109.                     String Entry Boxes . . . . . . . . . . . . . . . .   36
  110.                     Yes/No Boxes . . . . . . . . . . . . . . . . . . .   36
  111.                     Non-Editable Display Boxes . . . . . . . . . . . .   36
  112.  
  113.  
  114.  
  115.  
  116.                     List-Picking Boxes . . . . . . . . . . . . . . . .   36
  117.                The Mouse and The ASCII Table . . . . . . . . . . . . .   37
  118.  
  119.      Bingo Function Summary  . . . . . . . . . . . . . . . . . . . . .   39
  120.           Configuring Bingo  . . . . . . . . . . . . . . . . . . . . .   40
  121.                Function List . . . . . . . . . . . . . . . . . . . . .   40
  122.           Basic Editing  . . . . . . . . . . . . . . . . . . . . . . .   49
  123.                The Destructive Backspace . . . . . . . . . . . . . . .   49
  124.                The 'Default_' Functions  . . . . . . . . . . . . . . .   49
  125.                Function List . . . . . . . . . . . . . . . . . . . . .   49
  126.           Block Handling . . . . . . . . . . . . . . . . . . . . . . .   52
  127.                Marking . . . . . . . . . . . . . . . . . . . . . . . .   52
  128.                Operations on Blocks  . . . . . . . . . . . . . . . . .   52
  129.                Named Buffers . . . . . . . . . . . . . . . . . . . . .   53
  130.                Emacs_yank  . . . . . . . . . . . . . . . . . . . . . .   53
  131.                Function List . . . . . . . . . . . . . . . . . . . . .   53
  132.           Error Parsing and Undo . . . . . . . . . . . . . . . . . . .   57
  133.                How Error Parsing Works . . . . . . . . . . . . . . . .   57
  134.                Error Parsing Method  . . . . . . . . . . . . . . . . .   57
  135.                Undo Capabilities . . . . . . . . . . . . . . . . . . .   58
  136.                Manipulating the Undo Stack . . . . . . . . . . . . . .   58
  137.                Function List . . . . . . . . . . . . . . . . . . . . .   59
  138.                File Handling . . . . . . . . . . . . . . . . . . . . .   60
  139.                Function List . . . . . . . . . . . . . . . . . . . . .   60
  140.           Info . . . . . . . . . . . . . . . . . . . . . . . . . . . .   63
  141.                Function List . . . . . . . . . . . . . . . . . . . . .   63
  142.           Macros . . . . . . . . . . . . . . . . . . . . . . . . . . .   64
  143.                Macro Space . . . . . . . . . . . . . . . . . . . . . .   64
  144.                Defining Macros . . . . . . . . . . . . . . . . . . . .   64
  145.                Ending Macro Definition . . . . . . . . . . . . . . . .   64
  146.                Saving Macros . . . . . . . . . . . . . . . . . . . . .   64
  147.                Saving the Entire Key Set . . . . . . . . . . . . . . .   65
  148.                Executing a Macro File  . . . . . . . . . . . . . . . .   65
  149.                Function List . . . . . . . . . . . . . . . . . . . . .   65
  150.           Navigation . . . . . . . . . . . . . . . . . . . . . . . . .   67
  151.                Function List . . . . . . . . . . . . . . . . . . . . .   67
  152.           System Operations  . . . . . . . . . . . . . . . . . . . . .   71
  153.                Simple Execution & Shelling . . . . . . . . . . . . . .   71
  154.                Swap Execution & Shelling . . . . . . . . . . . . . . .   71
  155.                Function List . . . . . . . . . . . . . . . . . . . . .   71
  156.           Printing . . . . . . . . . . . . . . . . . . . . . . . . . .   73
  157.                Function List . . . . . . . . . . . . . . . . . . . . .   73
  158.           Searching  . . . . . . . . . . . . . . . . . . . . . . . . .   74
  159.                Regular Expression Search & Replace Examples  . . . . .   75
  160.                Function List . . . . . . . . . . . . . . . . . . . . .   76
  161.           Utilities  . . . . . . . . . . . . . . . . . . . . . . . . .   78
  162.                Function List . . . . . . . . . . . . . . . . . . . . .   78
  163.           Windows  . . . . . . . . . . . . . . . . . . . . . . . . . .   81
  164.                Window_vertical . . . . . . . . . . . . . . . . . . . .   81
  165.                Window_one & Window_zoom  . . . . . . . . . . . . . . .   81
  166.                Function List . . . . . . . . . . . . . . . . . . . . .   81
  167.           Extra Functions  . . . . . . . . . . . . . . . . . . . . . .   84
  168.                Pick & Exec . . . . . . . . . . . . . . . . . . . . . .   84
  169.                Quit and Save Status  . . . . . . . . . . . . . . . . .   84
  170.  
  171.  
  172.  
  173.  
  174.                Repeat_last . . . . . . . . . . . . . . . . . . . . . .   84
  175.                Box Draw Mode . . . . . . . . . . . . . . . . . . . . .   84
  176.                Cmd_line  . . . . . . . . . . . . . . . . . . . . . . .   85
  177.                Function List . . . . . . . . . . . . . . . . . . . . .   85
  178.  
  179.      Chess: The Language . . . . . . . . . . . . . . . . . . . . . . .   88
  180.           Introduction . . . . . . . . . . . . . . . . . . . . . . . .   88
  181.           Things to Possibly Come  . . . . . . . . . . . . . . . . . .   89
  182.           The Body of a Chess Program  . . . . . . . . . . . . . . . .   90
  183.           Variables and Constants and Comments . . . . . . . . . . . .   91
  184.                Integers and Characters:  . . . . . . . . . . . . . . .   91
  185.                Constants:  . . . . . . . . . . . . . . . . . . . . . .   91
  186.                Comments: . . . . . . . . . . . . . . . . . . . . . . .   92
  187.           Arrays and Pointers  . . . . . . . . . . . . . . . . . . . .   93
  188.                Arrays: . . . . . . . . . . . . . . . . . . . . . . . .   93
  189.                Pointers: . . . . . . . . . . . . . . . . . . . . . . .   93
  190.           Operators & Expressions  . . . . . . . . . . . . . . . . . .   96
  191.                Operators . . . . . . . . . . . . . . . . . . . . . . .   96
  192.                Expressions . . . . . . . . . . . . . . . . . . . . . .   97
  193.           Program Statements . . . . . . . . . . . . . . . . . . . . .   98
  194.                IF  . . . . . . . . . . . . . . . . . . . . . . . . . .   98
  195.                IF-ELSE . . . . . . . . . . . . . . . . . . . . . . . .   98
  196.                WHILE . . . . . . . . . . . . . . . . . . . . . . . . .   99
  197.                RETURN  . . . . . . . . . . . . . . . . . . . . . . . .   99
  198.                BREAK . . . . . . . . . . . . . . . . . . . . . . . . .   99
  199.                Compound Statements . . . . . . . . . . . . . . . . . .  100
  200.           User Functions . . . . . . . . . . . . . . . . . . . . . . .  101
  201.                An Example Chess Program  . . . . . . . . . . . . . . .  101
  202.                Declaration . . . . . . . . . . . . . . . . . . . . . .  101
  203.                Variable Scope  . . . . . . . . . . . . . . . . . . . .  103
  204.                The Rules of Scoping  . . . . . . . . . . . . . . . . .  103
  205.           Library Functions  . . . . . . . . . . . . . . . . . . . . .  104
  206.  
  207.      Using Chess From Within Bingo . . . . . . . . . . . . . . . . . .  105
  208.           Chess Code in a *.CFG File . . . . . . . . . . . . . . . . .  105
  209.           Attaching Chess Functions to Keystrokes  . . . . . . . . . .  106
  210.           The Chess Command Line in Bingo  . . . . . . . . . . . . . .  106
  211.           Attaching Chess Functions to Profile Files . . . . . . . . .  106
  212.           Running a Chess File on Startup  . . . . . . . . . . . . . .  107
  213.           Order of Execution on Startup  . . . . . . . . . . . . . . .  107
  214.           Debugging Chess Programs . . . . . . . . . . . . . . . . . .  107
  215.  
  216.      Library Function Reference  . . . . . . . . . . . . . . . . . . .  108
  217.           Ask  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  108
  218.           Atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . .  108
  219.           B_cmd  . . . . . . . . . . . . . . . . . . . . . . . . . . .  108
  220.           Beep . . . . . . . . . . . . . . . . . . . . . . . . . . . .  108
  221.           Box_pick . . . . . . . . . . . . . . . . . . . . . . . . . .  109
  222.           Get_str  . . . . . . . . . . . . . . . . . . . . . . . . . .  109
  223.           Get_yesno  . . . . . . . . . . . . . . . . . . . . . . . . .  110
  224.           Get_char . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  225.           Get_curr_text  . . . . . . . . . . . . . . . . . . . . . . .  110
  226.           Get_fname  . . . . . . . . . . . . . . . . . . . . . . . . .  111
  227.           Get_text . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  228.  
  229.  
  230.  
  231.  
  232.           Getkey . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  233.           Itoa . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  234.           Key  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  235.           Memcpy . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  236.           Msg  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  237.           Pick_file  . . . . . . . . . . . . . . . . . . . . . . . . .  112
  238.           Put_char . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  239.           Put_text . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  240.           Put_text_curr  . . . . . . . . . . . . . . . . . . . . . . .  113
  241.           Run  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  242.           Sformat  . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  243.           Str  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  244.           Strcat . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  245.           Strcmp . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  246.           Strcpy . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  247.           Strlen . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  248.           Strndx . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  249.           Update_display . . . . . . . . . . . . . . . . . . . . . . .  116
  250.           Valid_name . . . . . . . . . . . . . . . . . . . . . . . . .  116
  251.  
  252.      "Ask" Arguments . . . . . . . . . . . . . . . . . . . . . . . . .  117
  253.           File_autoindent  . . . . . . . . . . . . . . . . . . . . . .  117
  254.           File_bspace  . . . . . . . . . . . . . . . . . . . . . . . .  117
  255.           File_changes . . . . . . . . . . . . . . . . . . . . . . . .  117
  256.           File_cmode . . . . . . . . . . . . . . . . . . . . . . . . .  117
  257.           File_column  . . . . . . . . . . . . . . . . . . . . . . . .  118
  258.           File_dialogue  . . . . . . . . . . . . . . . . . . . . . . .  118
  259.           File_dirty . . . . . . . . . . . . . . . . . . . . . . . . .  118
  260.           File_id_no . . . . . . . . . . . . . . . . . . . . . . . . .  118
  261.           File_in_mark . . . . . . . . . . . . . . . . . . . . . . . .  118
  262.           File_insmode . . . . . . . . . . . . . . . . . . . . . . . .  118
  263.           File_line  . . . . . . . . . . . . . . . . . . . . . . . . .  119
  264.           File_matching  . . . . . . . . . . . . . . . . . . . . . . .  119
  265.           File_name  . . . . . . . . . . . . . . . . . . . . . . . . .  119
  266.           File_new . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  267.           File_number  . . . . . . . . . . . . . . . . . . . . . . . .  119
  268.           File_path  . . . . . . . . . . . . . . . . . . . . . . . . .  120
  269.           File_rmargin . . . . . . . . . . . . . . . . . . . . . . . .  120
  270.           File_smart_tabs  . . . . . . . . . . . . . . . . . . . . . .  120
  271.           File_tabsize . . . . . . . . . . . . . . . . . . . . . . . .  120
  272.           File_timed . . . . . . . . . . . . . . . . . . . . . . . . .  120
  273.           File_w_height  . . . . . . . . . . . . . . . . . . . . . . .  120
  274.           File_w_left  . . . . . . . . . . . . . . . . . . . . . . . .  121
  275.           File_w_top . . . . . . . . . . . . . . . . . . . . . . . . .  121
  276.           File_w_width . . . . . . . . . . . . . . . . . . . . . . . .  121
  277.           File_wordwrap  . . . . . . . . . . . . . . . . . . . . . . .  121
  278.           File_x . . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  279.           File_y . . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  280.           Sys_autoindent . . . . . . . . . . . . . . . . . . . . . . .  121
  281.           Sys_autostrip  . . . . . . . . . . . . . . . . . . . . . . .  122
  282.           Sys_autotrail  . . . . . . . . . . . . . . . . . . . . . . .  122
  283.           Sys_backups  . . . . . . . . . . . . . . . . . . . . . . . .  122
  284.           Sys_bounce . . . . . . . . . . . . . . . . . . . . . . . . .  122
  285.           Sys_bspace . . . . . . . . . . . . . . . . . . . . . . . . .  122
  286.  
  287.  
  288.  
  289.  
  290.           Sys_carraige . . . . . . . . . . . . . . . . . . . . . . . .  122
  291.           Sys_cmode  . . . . . . . . . . . . . . . . . . . . . . . . .  122
  292.           Sys_cols . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  293.           Sys_delete . . . . . . . . . . . . . . . . . . . . . . . . .  123
  294.           Sys_extensions . . . . . . . . . . . . . . . . . . . . . . .  123
  295.           Sys_fcount . . . . . . . . . . . . . . . . . . . . . . . . .  123
  296.           Sys_inmacro  . . . . . . . . . . . . . . . . . . . . . . . .  123
  297.           Sys_insmode  . . . . . . . . . . . . . . . . . . . . . . . .  123
  298.           Sys_matching . . . . . . . . . . . . . . . . . . . . . . . .  124
  299.           Sys_mouse  . . . . . . . . . . . . . . . . . . . . . . . . .  124
  300.           Sys_rdefs  . . . . . . . . . . . . . . . . . . . . . . . . .  124
  301.           Sys_recording  . . . . . . . . . . . . . . . . . . . . . . .  124
  302.           Sys_rmargin  . . . . . . . . . . . . . . . . . . . . . . . .  124
  303.           Sys_rows . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  304.           Sys_sdefs  . . . . . . . . . . . . . . . . . . . . . . . . .  124
  305.           Sys_smart_tabs . . . . . . . . . . . . . . . . . . . . . . .  125
  306.           Sys_tabsize  . . . . . . . . . . . . . . . . . . . . . . . .  125
  307.           Sys_timed  . . . . . . . . . . . . . . . . . . . . . . . . .  125
  308.           Sys_word_delim . . . . . . . . . . . . . . . . . . . . . . .  125
  309.           Sys_wordwrap . . . . . . . . . . . . . . . . . . . . . . . .  125
  310.           Sys_zoom . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  311.           Version  . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  312.           Ws_size  . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  313.  
  314.      Chess Execution Errors  . . . . . . . . . . . . . . . . . . . . .  127
  315.           Abort  . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  316.           Arguments  . . . . . . . . . . . . . . . . . . . . . . . . .  127
  317.           Bingo Intrinsic  . . . . . . . . . . . . . . . . . . . . . .  127
  318.           Class  . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
  319.           Declaration  . . . . . . . . . . . . . . . . . . . . . . . .  127
  320.           Exec Interp  . . . . . . . . . . . . . . . . . . . . . . . .  127
  321.           Function Table Overflow  . . . . . . . . . . . . . . . . . .  127
  322.           Interpretor Parsing  . . . . . . . . . . . . . . . . . . . .  127
  323.           Left Brace . . . . . . . . . . . . . . . . . . . . . . . . .  127
  324.           Left-Value . . . . . . . . . . . . . . . . . . . . . . . . .  128
  325.           Link . . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  326.           Range  . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  327.           Right Paren  . . . . . . . . . . . . . . . . . . . . . . . .  128
  328.           Stack (Pop)  . . . . . . . . . . . . . . . . . . . . . . . .  128
  329.           Stack (Push) . . . . . . . . . . . . . . . . . . . . . . . .  128
  330.           Symbol . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  331.           Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . .  128
  332.           System Call  . . . . . . . . . . . . . . . . . . . . . . . .  128
  333.           System Variable  . . . . . . . . . . . . . . . . . . . . . .  129
  334.           Variable Table Overflow  . . . . . . . . . . . . . . . . . .  129
  335.  
  336.      Some Example Chess Code . . . . . . . . . . . . . . . . . . . . .  130
  337.           Example #1: Execute the Current File . . . . . . . . . . . .  130
  338.           Example #2: Factorials . . . . . . . . . . . . . . . . . . .  130
  339.           Example #3: Synchronized Scrolling . . . . . . . . . . . . .  131
  340.  
  341.      License Agreement . . . . . . . . . . . . . . . . . . . . . . . .  132
  342.  
  343.      Registration Form - Bingo 3.00  . . . . . . . . . . . . . . . . .  134
  344.  
  345.  
  346.  
  347.  
  348.  
  349.      Site License Policy . . . . . . . . . . . . . . . . . . . . . . .  136
  350.  
  351.      The Author  . . . . . . . . . . . . . . . . . . . . . . . . . . .  137
  352.  
  353.      Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  138
  354.  
  355.      Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  139
  356.  
  357.  
  358.  
  359.  
  360.                                   Introduction
  361.                                   ------------
  362.  
  363.           This document serves as the reference manual for Bingo 3.00. 
  364.      Bingo is a full-featured text editor at the right price.  Some of its
  365.      features include:
  366.  
  367.      -    high speed execution
  368.      -    virtual memory for file storage; up to 240 Megabytes of file
  369.           storage possible
  370.      -    CHESS C-like interpreted language giving you access to Bingo's
  371.           power in a true programmable language with looping, decision
  372.           making, functions, variables and more.
  373.      -    full color support
  374.      -    completely programmable keyboard, allowing 1,2, and 3-key
  375.           combinations as well as programmable mouse support
  376.      -    support of VGA, EGA, & MCGA extended text modes
  377.      -    large suite of utility functions: entab; detab; command repeat
  378.      -    custom define your own keyboard setup
  379.      -    complete menu system supporting most Bingo functions
  380.      -    multiple files, multiple windows
  381.      -    execute DOS commands, including command-line compilers within
  382.           only ~3k of overhead
  383.      -    regular expression search and replace
  384.      -    highly configurable from within itself
  385.      -    use placemarks to mark positions in files
  386.      -    user definable help file
  387.      -    extensive block operation support, include point, line and column
  388.           marking, and two different sets of block operations
  389.      -    one default block buffer, plus 26 additional named buffers
  390.      -    wordwrap, paragraph formatting, and autoindent support included
  391.           for text processing work
  392.      -    C Mode supports programming in the C programming language
  393.      -    User-defined delimiter and indentation matching
  394.      -    directory list picker
  395.      -    execute *any* Bingo function from within Bingo whether it has
  396.           been assigned to a key or not using a 'function picker'
  397.      -    interrupt Bingo at any point and exit, and when you restart Bingo
  398.           it will pick up exactly where you left off
  399.      -    print files & blocks through the serial port, parallel port, or
  400.           to a file, with or without line numbers and/or page headers
  401.      -    set printing left margin, top margin, and lines per page
  402.      -    automatic processing of errors generated by the Borland and
  403.           Microsoft developmental tools
  404.      -    undelete stack of deleted items
  405.      -    execute any command or macro "globally" over all files
  406.      -    profile files allow file extension specific settings
  407.      -    box draw mode for easy screen design
  408.      -    automated, timed backups
  409.  
  410.  
  411.  
  412.                            Bingo 3.00 Reference Manual
  413.                                         1
  414.  
  415.  
  416.  
  417.  
  418.      Philosophy
  419.      ----------
  420.  
  421.           Text editors are not required for every system; at least, an
  422.      editor of Bingo's power is not.  If all you require of your editor is
  423.      that it allow you to modify batch files and such, Bingo is overkill. 
  424.      Cheap overkill, but still overkill.  However, if you use an editor
  425.      daily, as a programmer, as a consultant who hops from system to system
  426.      and likes to have his/her own tools, or in any other situation where
  427.      you need to depend on it, Bingo could very well be what you are
  428.      looking for.  Why?  In spite of its power, Bingo is very inexpensive,
  429.      and does some things no other editors do, as a look at its feature
  430.      list will convince you.
  431.           People who live with an editor daily for long stretches of time
  432.      know that choosing an editor is a near-religious experience.  Defense
  433.      of your choice develops into a kind of fanaticism.  In the Unix world,
  434.      VI/Emacs wars promise to extend into the next millennium.  It was the
  435.      fact that I could not find an editor I was truly comfortable with that
  436.      prompted me to design Bingo.  In doing so I believe I have created an
  437.      editor that appeals to a broad base of users.  
  438.           Bingo allows a large degree of latitude when it comes to
  439.      assigning keys.  In a complementary fashion, it allows a user
  440.      specified file to be used for help.  Further, because of Bingo's
  441.      extensive and powerful menuing system, you do not need to memorize a
  442.      large number of keystrokes in order to use Bingo effectively.  This
  443.      allows you to get up and going in a minimum amount of time.
  444.           Bingo has a large degree of programmable mouse support has been
  445.      added.  I have found mouse use to be very nice when editing, and the
  446.      response has been very enthusiastic.  Version 2.10e added an
  447.      additional mouse primitive 'mouse_scroll' which, combined with the
  448.      macro capability, allows you to scroll and drag with your mouse.
  449.           Bingo is optimized for response time.  Screen response in
  450.      particular is very quick, taking full advantage of the PC's direct
  451.      video architecture.  Searches also occur at blazing speed -- a must if
  452.      you spend many hours with an editor.
  453.           Bingo is heavily configurable, all from within the editor itself. 
  454.      This "on-the-fly" ability is a lifesaver if you hop from one system to
  455.      another.
  456.           Bingo has all the standard macro and file handling abilities, but
  457.      it specifically excels at block handling.  Three types of marking, 27
  458.      buffers to use, and a huge array of functions to deal with block
  459.      operations allow you to use blocks to their fullest.
  460.           Especially designed for programmers, Bingo includes a suite of
  461.      utility functions to aid in handling program text.  Functions to shift
  462.      blocks of text left and right, to align blocks, to sort blocks, to
  463.      match delimiters, and to move by indentation are only a few of the
  464.      many handy functions included.  In version 2.10e, you can specify just
  465.      what a delimiter is, say "repeat" and "until".  Then you could sit on
  466.      a "repeat", and let Bingo find the matching "until".
  467.           With version 2.01, a powerful regular expression search and
  468.      replace method has been added.  Further, 'profile' files, which enable
  469.  
  470.                            Bingo 3.00 Reference Manual
  471.                                         2
  472.  
  473.  
  474.  
  475.  
  476.      specific text settings to be associated with files having certain
  477.      extensions, are supported.  To make this useful, each file (or buffer)
  478.      in the ring now maintains its own set of these settings.  This allows
  479.      you to have the correct settings for .DOC files show up when you load
  480.      .DOC files, the correct settings for .CPP files do likewise, and so
  481.      on.
  482.           With version 2.10, virtual memory was introduced, allowing the
  483.      editing of files totalling more than 200 megabytes.  This was a major
  484.      change and added a quantum leap of functionality to Bingo.  I regard
  485.      this add of functionality as attracting the majority of new users'
  486.      initial attention, thus increasing my registrations.  
  487.           Now, with version 3.00, I am pleased to release Bingo with the
  488.      Chess procedural language.  Chess extends to you, the user, a
  489.      phenomenal amount of control over Bingo's behavior.  Chess supports
  490.      looping, if-then-else statements, variables, functions, and more. 
  491.      Chess code can be executed automatically at startup, linked to profile
  492.      files for specific file extensions, assigned to specific keystrokes,
  493.      or run from a command line.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.                            Bingo 3.00 Reference Manual
  529.                                         3
  530.  
  531.  
  532.  
  533.  
  534.      The Association of Shareware Professionals
  535.      ------------------------------------------
  536.  
  537.           This program is produced by a member of the Association of
  538.      Shareware Professionals (ASP).  ASP wants to make sure that the
  539.      shareware principle works for you. If you are unable to resolve a
  540.      shareware-related problem with an ASP member by contacting the member
  541.      directly, ASP may be able to help. The ASP Ombudsman can help you
  542.      resolve a dispute or problem with an ASP member, but does not provide
  543.      technical support for members' products.  Please write to the ASP
  544.      Ombudsman at 545 Grover Road, Muskegon, MI 49442 or send a CompuServe
  545.      message via CompuServe Mail to ASP Ombudsman 70007,3536.
  546.           Version 3.00 is the first version of Bingo to be released since I
  547.      became a member of the ASP (I was notified 4 days prior to the planned
  548.      release date of v3.00!).  With the extended opportunities and contacts
  549.      available to me through the ASP, I should be able to take Bingo
  550.      further than would have been possible in order to serve my customers
  551.      better.
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.                            Bingo 3.00 Reference Manual
  587.                                         4
  588.  
  589.  
  590.  
  591.  
  592.      The Shareware Concept and Registering
  593.      -------------------------------------
  594.           This is just a general note as to what Bingo being Shareware
  595.      means to you, the user.  Shareware could just as easily be called
  596.      "Honorware": I depend upon you honor to mail in your payment for Bingo
  597.      if you are using it regularly.  All of the legal jargon describing
  598.      this Shareware concept is contained in the License & Registration
  599.      section of this manual.
  600.           Basically, I depend upon you to mail in your payment for Bingo
  601.      after you have taken a reasonable amount of time to try it out.  If
  602.      you use it regularly, please mail in the payment.  The number of man-
  603.      hours which went into Bingo is incredible; the registration fee is a
  604.      small price to pay. So if you use Bingo regularly, send me the
  605.      registration fee I charge for Bingo -- it's not much money for a very
  606.      sharp program.
  607.           When you register, you are entitled to a number of advantages,
  608.      depending on how you register.  If your registration is a Single
  609.      Version registration ($40), these benefits include:
  610.           1) If you request it, I will mail you a copy of the current
  611.           release of Bingo free.
  612.           2) You are entitled to support for 9 months, or until 1 month
  613.           past the release of the next version, whichever is longer.
  614.      If your registration is a Lifetime registration ($75), your benefits
  615.      are a little more extensive.  They include:
  616.           1) If you request it, I will mail you a copy of the current
  617.           release of Bingo free.
  618.           2) You are entitled to support for as long as Bingo is marketed
  619.           as a product, be it as shareware or commercial.
  620.           3) The next release will be mailed to you free of charge.
  621.           4) You will be notified of each successive release, and each will
  622.           be available to you for a mere $5.00 shipping fee.
  623.  
  624.           In addition, with version 2.01 and beyond, registered users of
  625.      any sort get to have their named emblazoned on their copy for all to
  626.      see;  this way everyone will know what honorable people they are.  And
  627.      no, a simple sector editor cannot change this name -- it has to be
  628.      done here.  The name will be shown on the initial screen which is
  629.      popped up when Bingo is executed, and can also be accessed from the
  630.      'version_info' function.
  631.           Also, some registered users are able to beta-test upcoming
  632.      versions -- a double-edged sword.  Beta testing is somewhat precarious
  633.      at times, but you do get to take a hand in forming the next version. 
  634.      Plus you get to have your complaints redressed faster than the general
  635.      public.
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.                            Bingo 3.00 Reference Manual
  645.                                         5
  646.  
  647.  
  648.  
  649.  
  650.      Ordering Direct & PsL Shareware Registration
  651.      --------------------------------------------
  652.  
  653.           You can order directly from me at the below address:
  654.  
  655.                        Christopher R. S. Schanck
  656.                        PO Box 279
  657.                        Hanover MD 21076
  658.                        (410) 379-9019
  659.  
  660.           You can also register from Public (software) Library with your
  661.      MC, Visa, AmEx or Discover card by calling 800-2424-PsL or
  662.      713-524-6394 or by FAX to 713-524-6398 or by CompuServe to 71355,470
  663.      or by mail to PsL, PO Box 35705, Houston, Texas 77235-5705.  Bingo's
  664.      order # is 10399. Please use this number when ordering if possible. 
  665.      These numbers are for ordering only.  For information about dealer
  666.      pricing, volume discounts, site licensing, shipping of product,
  667.      returns, latest version number or other technical information, contact
  668.      me directly at the above address.
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.                            Bingo 3.00 Reference Manual
  703.                                         6
  704.  
  705.  
  706.  
  707.  
  708.      Things to Possibly Come
  709.      -----------------------
  710.           For quite a long time, virtual memory was "something to come". 
  711.      However, 2.10 introduced a fast, efficient virtual memory paradigm. 
  712.      Theoretically, it allows you to edit up to 240 Megabytes of file
  713.      storage -- that is a lot of text!  Practically, it means that if you
  714.      have the disk storage, you need not worry about memory constraints
  715.      again.  
  716.           For some time, another goal was implementing a full procedural
  717.      language.  Earlier this year (12/91) I began prototyping a full
  718.      procedural interpreter which was to be integrated into Bingo.  I am
  719.      pleased to announce the Chess procedural language as an integral part
  720.      of Bingo starting with version 3.00.  Chess is a very powerful, if
  721.      minimalistic, C-like language complete with looping, if-then-else
  722.      statements, variables, functions, and more.  You can interrogate Bingo
  723.      for its current status, and ask the user for a variety of input.  
  724.           So what remains?  Plenty; it seems that the more goals I reach,
  725.      the more I (and my users!) can come up with.  Two major things are
  726.      currently being looked at.  First, I really want to add customizable
  727.      menus to Bingo; even more so with addition of Chess, this seems to me
  728.      to be a very important addition.  Second, I am currently exploring
  729.      various methods of implementing a multi-level undo.
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.                            Bingo 3.00 Reference Manual
  761.                                         7
  762.  
  763.  
  764.  
  765.  
  766.      Support
  767.      -------
  768.  
  769.           As any of my registered users will tell you, I am committed to
  770.      supporting Bingo.  Without my users, where would I be?  Anyone,
  771.      registered or not, who calls or writes me will receive prompt and
  772.      (hopefully) useful help.  I particularly like to hear of requests;
  773.      anything you would like to see in Bingo, let me know.  One of my beta-
  774.      testers remarked that he felt like he had a personal editor --
  775.      anything he wanted was added.
  776.           I am now residing in the Baltimore area.  The address and phone
  777.      number to contact me at is:
  778.  
  779.           Christopher Schanck
  780.           PO Box 279
  781.           Hanover MD 21076
  782.           (410) 379-9019
  783.  
  784.      You are welcome to call me at the above number, but while the address
  785.      will be stable for the next several years, phone numbers do change. 
  786.      Should this number become invalid for any reason, call (215) 691-1070
  787.      (9am to 6pm, EST).  If you wish, you will be given a number where you
  788.      can currently reach me, or you can leave your name and number, and I
  789.      will return your call within 2-3 days.
  790.           PLEASE feel free to contact me.  I very much like to hear from
  791.      you!  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.                            Bingo 3.00 Reference Manual
  819.                                         8
  820.  
  821.  
  822.  
  823.  
  824.      CompuServe
  825.      ----------
  826.           You will get the quickest response from me via Compuserve.  You
  827.      can contact me there as:
  828.           70541,3614
  829.      On the Internet, that would be:
  830.           70541.3614@compuserve.com
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.                            Bingo 3.00 Reference Manual
  877.                                         9
  878.  
  879.  
  880.  
  881.  
  882.      Getting the Latest Version
  883.      --------------------------
  884.           If you have a copy of Bingo but are not sure if it is the latest
  885.      version, the best way to find out is by calling the Computer
  886.      Connection BBS in Washington DC.  This is a very large, well-managed
  887.      BBS.  The latest version of Bingo will always be available here, and
  888.      E-Mail left for me will be answered.  The number is (202) 547-2008. 
  889.      Likewise, Bingo will always be on Compuserve, in the IBMNET section,
  890.      generally named BINGO?.ZIP.
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.                            Bingo 3.00 Reference Manual
  935.                                        10
  936.  
  937.  
  938.  
  939.  
  940.      Using this Manual
  941.      -----------------
  942.           This manual is broken into four parts.  The first is an overview
  943.      of Bingo itself, including things like customization.
  944.           The second section consists of sections on each major
  945.      functionality present in Bingo.  These individual sections are not
  946.      tutorial in orientation, but rather give necessary information needed
  947.      to utilize this functionality.  Each section has both a narrative
  948.      section and a function reference.
  949.           The third section is a overview and introduction to the Chess
  950.      procedural language, covering things like syntax and rules.  The final
  951.      section is the library reference for Chess.
  952.           I suggest that the first time user first read the initial
  953.      sections for pertinent information, then go through the function
  954.      summary thoroughly.  This will give you a clear idea of the
  955.      capabilities of Bingo.  Reading the thrid section will familiarize you
  956.      with the capabilites of the Chess language.
  957.           Finally, *please* read the READ.ME file very carefully.  In some
  958.      cases it will have information this file doesn't contain, and it may
  959.      describe some things in greater detail as it is kept as a running log
  960.      as I make changes.
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                            Bingo 3.00 Reference Manual
  993.                                        11
  994.  
  995.  
  996.  
  997.  
  998.                                     Overview
  999.                                     --------
  1000.  
  1001.      Installing Bingo
  1002.      ----------------
  1003.           There are 2 files which are of critical importance for Bingo to
  1004.      run. 
  1005.           BE.EXE is the executables.  If you dislike typing 'be' at the DOS
  1006.      command, you CAN rename Bingo's executable.  One point to remember,
  1007.      don't invoke the .EXE file directly. 
  1008.           KEYCFG.SET is the compiled keyboard definition file.  This needs
  1009.      to be in the same directory as BE.EXE, or in the current directory.
  1010.           Without these two files, BE.EXE & KEYCFG.SET, Bingo will not
  1011.      start.
  1012.           There is another file which is useful but not mandatory for Bingo
  1013.      to run.  BINGO.INI, in either the current directory or in same
  1014.      directory as BE.EXE.
  1015.           The help file BINGO.HLP, is an additional file which must be in
  1016.      the same subdirectory as BE.EXE if you wish to use it.  When you
  1017.      invoke help, Bingo will look there for the file BINGO.HLP.  The file
  1018.      may contain your own description of the current key layout, or just
  1019.      about anything else you would like.  Bingo comes with a default help
  1020.      file.
  1021.           As an example, assume the Bingo distribution files are contained
  1022.      on floppy disk on drive A:, and you are installing Bingo on drive C:. 
  1023.      First, move to drive C: and create a directory for bingo, called
  1024.      \bingo using DOS's mkdir command.  Move to this subdirectory using 'cd
  1025.      \bingo'.  Now copy the files from drive A: over to the proper
  1026.      subdirectory by using 'copy A:*.* C:\BINGO'.
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.                            Bingo 3.00 Reference Manual
  1051.                                        12
  1052.  
  1053.  
  1054.  
  1055.  
  1056.      BOPTS: The External Config Utility
  1057.      ----------------------------------
  1058.           While most of Bingo's options are configurable from within Bingo
  1059.      itslef, for certain technical reasons some are not.  BOPTS is a
  1060.      utility which allows you to set these.  To run BOPTS, use
  1061.  
  1062.           BOPTS
  1063.  
  1064.      and BOPTS will look for the file BE.EXE in the current directory. 
  1065.      Using:
  1066.  
  1067.           BOPTS <executable name>
  1068.  
  1069.      and BOPTS will look for the name you give it.
  1070.           BOPTS will allow you to alter several key attributes affecting
  1071.      the way Bingo runs.  This section will detail what those options are,
  1072.      and what they can do for you.
  1073.           BOPTS will modify the BE.EXE executable directly, so if you are
  1074.      going to compress it with one of the several popular utilities which
  1075.      do so, beware, you will have to uncompress it for BOPTS to work. 
  1076.      Also, if you have anti-virus programs, they will probably complain
  1077.      about BOPTS modifying BE.EXE as well.  
  1078.           The good news is that the settings controlled by BOPTS are of a
  1079.      nature that you will not have to set them often.
  1080.  
  1081.      # of Buckets & Bucketsize
  1082.      -------------------------
  1083.           The first two options are the # of virtual memory 'buckets' Bingo
  1084.      uses allocates space for upon startup, and the second is the 'size' of
  1085.      each virtual-memory bucket, or 'bucketsize'.  In short, the number of
  1086.      buckets (up to 15k) times the size of each buckt (up to 16k)
  1087.      determines the maximum theoretical memory limit.  For a full
  1088.      discussion of how these two parameters impact performance, see the
  1089.      secion on Virtual Memory.
  1090.  
  1091.      Chess Stack Size
  1092.      ----------------
  1093.           This option controls the number of items Bingo allocates room for
  1094.      Chess subprograms to use on the Chess stack.  Since all Chess
  1095.      subprograms sharea common stack, this can be important.  In heavily
  1096.      recursive pieces of code, increasing this can be very important. 
  1097.  
  1098.      Chess # of Variables
  1099.      --------------------
  1100.           This dictates what the maximum number of Variables Bingo
  1101.      allocates handles for on startup.  
  1102.  
  1103.      Chess # of Functions
  1104.      --------------------
  1105.           This dictates what the maximum number of Functions Bingo
  1106.      allocates handles for on startup.  
  1107.  
  1108.                            Bingo 3.00 Reference Manual
  1109.                                        13
  1110.  
  1111.  
  1112.  
  1113.  
  1114.      Scramble Registration Name
  1115.      --------------------------
  1116.           This option will allow you to scramble the registration name in a
  1117.      copy of BE.EXE.  This will blank out the current registration name. 
  1118.      This is included so that people who have registrered copies and wish
  1119.      to pass them along can expunge there name from the executable.
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.                            Bingo 3.00 Reference Manual
  1167.                                        14
  1168.  
  1169.  
  1170.  
  1171.  
  1172.      Bingo & Virtual Memory
  1173.      ----------------------
  1174.           In version 2.10, Bingo introduced a virtual memory paradigm to
  1175.      allow programmers to edit more and larger files.  Virtual memory is a
  1176.      simple, elegant, beautiful concept in the abstract; the reality, on an
  1177.      MS-DOS based PC, is a very hairy beasty indeed.  Many different
  1178.      methods for implementing virtual memory were examined.  The one I
  1179.      settled on seems a good compromise; Bingo is still quick, and the
  1180.      memory/disk swapping necessary when you are working with large files
  1181.      is relatively unobtrusive.  I still edit fairly regularly on an 8088
  1182.      machine, with a 65ms hard disk, and I find Bingo plenty fast enough. 
  1183.      On a 386 with a fast drive (say, an 80meg IDE drive with a 32k onboard
  1184.      cache), you never even realize it is swapping.
  1185.           Bingo treats file storage as a set of fixed length blocks.  As
  1186.      shipped, Bingo is generally configured for 4096 byte-sized blocks, or
  1187.      4k.  Internally, Bingo can deal with up to 16k of these blocks, or
  1188.      *buckets*, configurable from 1k to 16k.  The *bucketsize* is the size
  1189.      of each block and is configurable from 2k to 16k.  The larger the
  1190.      bucketsize, the more blocks (or buckets) allocated the higher the
  1191.      theoretical memory limit.  For instance, a bucketsize of 16k with 8k
  1192.      buckets gives a theoretical memory limit of 128 Megabytes!  So why not
  1193.      just set the limits way up and be done with it?
  1194.           Two reasons.  First, the larger the bucketsize, the harder Bingo
  1195.      works to manipulate text.  On faster machines, larger bucketsizes are
  1196.      fine; on a 386/25 Mhz PC, a 16k bucketsize is no problem at all.  On
  1197.      the other hand, a 2k bucketsize is fine on every machine out there. 
  1198.           The more buckets allocated, the less conventional memory Bingo
  1199.      has available for use.  So allocating a lot more than you need is non-
  1200.      optimal use of your resources.
  1201.           Second, let's be serious about this.  Seldom, if ever, will
  1202.      someone really need to edit a file 200+ Megs in size.  Could happen;
  1203.      that is why I coded it as I did.  But still.  Also, do the arithmetic. 
  1204.      To edit a 200M file, you need roughly > 400M of disk storage; 200M for
  1205.      the file itself, + 200M for the swapfile, + some odd number of bytes
  1206.      for the file entries in the FAT table (grin).  Not a lot of systems
  1207.      around with several hundred megs of storage hanging about.  But we
  1208.      plan for the future.
  1209.           You can change the Bucketsize and # of Buckets via the BOPTS
  1210.      utility.
  1211.  
  1212.      Impact of Virtual Memory on Performance
  1213.      ---------------------------------------
  1214.           Virtual memory has had a measurable impact on Bingo's performance
  1215.      in a number of areas.  Users coming from version 2.01 or earlier will
  1216.      appreciate this discussion of differences.  
  1217.           On the downside, general editing is, in my estimation, a touch
  1218.      slower.  Searches, scrolling, block operations, etc.  On the other
  1219.      hand,  the only machine I can tell the difference on is an ancient
  1220.      8088; use an AT-class machine, and you can't see a difference. 
  1221.      However, even on the 8088, things are by no means slow; searches and
  1222.      such are still very quick.
  1223.  
  1224.                            Bingo 3.00 Reference Manual
  1225.                                        15
  1226.  
  1227.  
  1228.  
  1229.  
  1230.           One function in particular is much slower.  When you sort a
  1231.      block, things are much, *much* slower in this version.  This is not so
  1232.      much a consequence of the virtual memory per se, but of the new memory
  1233.      structure.  In version 2.01 and earlier, sorting was done with a
  1234.      recursive algorithm (N log N bound), and swapping lines meant swapping
  1235.      pointers only.  In version 2.10, a stack-based sort is not acceptable,
  1236.      because with a large file you could corrupt the stack.  So the
  1237.      excellent CombSort algorithm (April 1991 BYTE) was used instead.  This
  1238.      algorithm approximates N log N time, but is ultimately slower.  The
  1239.      real speed killer, however, is that I can no longer simply swap
  1240.      pointers.  Instead, I have to physically move the lines themselves
  1241.      around.  This is slow, slow, slow, pushing the sort time way, way up. 
  1242.      But I did not want to eliminate sorting entirely.  I use it too much
  1243.      to give up.
  1244.           On the upside, obviously, you can edit humongous files with ease,
  1245.      and a virtually unlimited number of files.  This is an obvious
  1246.      improvement.
  1247.           The other highly visible improvement is in File I/O.  File
  1248.      reading and writing has been speeded up by something approaching a
  1249.      factor of 4.  The larger you set the pagesize, the faster file IO will
  1250.      be.  ALthough increasing the pagesize past the size of a disk sector
  1251.      will generally not show a lot of improvement.
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.                            Bingo 3.00 Reference Manual
  1283.                                        16
  1284.  
  1285.  
  1286.  
  1287.  
  1288.      KEYCFG: The Keyboard Configuration Program
  1289.      ------------------------------------------
  1290.           KEYCFG is the program used to create a keyboard configuration
  1291.      which the Bingo executable can utilize.  KEYCFG also allows you to
  1292.      embed Chess code (Bingo's procedural language) into a .SET file and
  1293.      assigned code subprograms to keys. The supplied configuration files
  1294.      (BINGO.CFG, EMACS.CFG, possibly others) give a good example of how to
  1295.      set up the file.
  1296.           Using Chess code in Bingo is covered thoroughly in the Chess
  1297.      manual, so this section will give a quick rundown on using Chess with
  1298.      Keycfg.
  1299.  
  1300.           KEYCFG is invoked as follows:
  1301.  
  1302.                KEYCFG <configuration name> <keyset filename>
  1303.  
  1304.      <configuration name> is the name of the text configuration source file
  1305.      you wish KEYCFG to read, and <keyset filename> is the name you wish
  1306.      KEYCFG to write the compiled keyboard setup to.  The default keyset
  1307.      file which Bingo looks for on startup is KEYCFG.SET.  Bingo will look
  1308.      first in the current directory, then in Bingo's own home directory. 
  1309.      Alternate keyset files can be loaded from within Bingo using the
  1310.      'key_set_load' function.
  1311.  
  1312.      Key Names
  1313.      ---------
  1314.           KEYCFG's primary job is to assign functionality to keystrokes or
  1315.      combinations of keystrokes.  As such, it is important to know the
  1316.      possible keynames.  The keys follow the following patterns:
  1317.  
  1318.      f1-f12    are the function keys
  1319.      !f1-!f12  are the shifted function keys
  1320.      @f1-@f12  are the control function keys
  1321.      #f1-#f12  are the alt function keys
  1322.      @<key>    is the control-<key> combination
  1323.      #<key>    is the alt-<key> combination
  1324.      <key>     is a simple key, named key, or a mouse event.
  1325.  
  1326.      These are named keys:
  1327.  
  1328.           alt_backspace                      alt_grey_right_arrow
  1329.           alt_equal                          alt_grey_up_arrow
  1330.           alt_escape                         alt_keypad_aster
  1331.           alt_grey_delete                    alt_keypad_divide
  1332.           alt_grey_down_arrow                alt_keypad_minus
  1333.           alt_grey_end                       alt_keypad_plus
  1334.           alt_grey_home                      alt_keypad_return
  1335.           alt_grey_insert                    alt_minus
  1336.           alt_grey_left_arrow                alt_return
  1337.           alt_grey_pgdn                      alt_tab
  1338.           alt_grey_pgup                      backspace
  1339.  
  1340.                            Bingo 3.00 Reference Manual
  1341.                                        17
  1342.  
  1343.  
  1344.  
  1345.  
  1346.           backtab                            keypad_plus
  1347.           ctrl_backspace                     keypad_return
  1348.           ctrl_delete                        left_arrow
  1349.           ctrl_down_arrow                    pgdn
  1350.           ctrl_end                           pgup
  1351.           ctrl_grey_delete                   return
  1352.           ctrl_grey_down_arrow               right_arrow
  1353.           ctrl_grey_end                      shift_delete
  1354.           ctrl_grey_home                     shift_down_arrow
  1355.           ctrl_grey_insert                   shift_end
  1356.           ctrl_grey_left_arrow               shift_home
  1357.           ctrl_grey_pgdn                     shift_insert
  1358.           ctrl_grey_pgup                     shift_keypad_5
  1359.           ctrl_grey_right_arrow              shift_left_arrow
  1360.           ctrl_grey_up_arrow                 shift_pgdn
  1361.           ctrl_home                          shift_pgup
  1362.           ctrl_insert                        shift_right_arrow
  1363.           ctrl_keypad_5                      shift_up_arrow
  1364.           ctrl_keypad_aster                  tab
  1365.           ctrl_keypad_divide                 up_arrow
  1366.           ctrl_keypad_minus
  1367.           ctrl_keypad_plus                   Note:  The keynames with
  1368.           ctrl_keypad_return                 'grey' in them, as well as
  1369.           ctrl_left_arrow                    F11, F12, and several others,
  1370.           ctrl_minus                         denote keys which are
  1371.           ctrl_pgdn                          available only if you have an
  1372.           ctrl_pgup                          extended keyboard, and you
  1373.           ctrl_return                        have the 'Use Extended
  1374.           ctrl_right_arrow                   Keyboard Bios' option turned
  1375.           ctrl_tab                           on.
  1376.           ctrl_up_arrow
  1377.           delete
  1378.           down_arrow
  1379.           end
  1380.           escape
  1381.           grey_delete
  1382.           grey_down_arrow
  1383.           grey_end
  1384.           grey_home
  1385.           grey_insert
  1386.           grey_left_arrow
  1387.           grey_pgdn
  1388.           grey_pgup
  1389.           grey_right_arrow
  1390.           grey_up_arrow
  1391.           home
  1392.           insert
  1393.           keypad_5
  1394.           keypad_aster
  1395.           keypad_divide
  1396.           keypad_minus
  1397.  
  1398.                            Bingo 3.00 Reference Manual
  1399.                                        18
  1400.  
  1401.  
  1402.  
  1403.  
  1404.           These are the mouse events:
  1405.  
  1406.           Three_buttons
  1407.           Left_right_buttons
  1408.           Left_middle_buttons
  1409.           Multiple_left_button
  1410.           Single_left_button
  1411.           Right_middle_buttons
  1412.           Multiple_right_button
  1413.           Single_right_button
  1414.           Multiple_middle_button
  1415.           Single_middle_button
  1416.           Single_up_arrow
  1417.           Single_down_arrow
  1418.           Single_left_arrow
  1419.           Single_right_arrow
  1420.           Single_pyramids
  1421.           Multiple_up_arrow
  1422.           Multiple_down_arrow
  1423.           Multiple_left_arrow
  1424.           Multiple_right_arrow
  1425.           Multiple_pyramids
  1426.  
  1427.  
  1428.           The configuration file itself consists of two sections:
  1429.  
  1430.      Section 1 -- Key Assignments
  1431.      ----------------------------
  1432.      The first is any number of lines of key assignments of one of the
  1433.      following formats:
  1434.  
  1435.           a)   <key specifier> <function identifier>
  1436.           b)   <key specifier> macro <macro list>
  1437.           c)   <key specifier> <character>
  1438.           d)   ; <comment text>
  1439.  
  1440.                A line starting with a space is a continuation of the
  1441.                previous line.
  1442.  
  1443.           <key specifier> is either a simple <key name>, or two key names
  1444.      strung together as <key name>+<key name>, or three key names strung
  1445.      together as <key_name>+<key_name>+<key_name>.  For instance, for you
  1446.      Wordstar people, control-k q would be entered as '@k+q'  (Note: in
  1447.      this case, the Bingo will recognize both the sequence @k+q and @k+Q as
  1448.      the same thing -- case is not significant.)
  1449.           The <macro list> is a list of 0 or more function descriptors, as
  1450.      listed in the Function Summary section, and 0 or more literal
  1451.      occurrences, and 0 or more named keys, in any order.  The literals
  1452.      must be enclosed in single quotes.  The literals will occur in the
  1453.      macro exactly as if they had been typed.  For instance, the line
  1454.           f1    macro 'Chris' return
  1455.  
  1456.                            Bingo 3.00 Reference Manual
  1457.                                        19
  1458.  
  1459.  
  1460.  
  1461.  
  1462.      would define the f1 key as my name followed by a return.
  1463.           The <character> is any printable ASCII character, entered without
  1464.      quotes.  For instance, 
  1465.           <    ,
  1466.      would redefined the less-than symbol to be the comma.  This
  1467.      translation will occur during general editing, as well as in the
  1468.      search and replace string-entry boxes.  Everywhere else it will be
  1469.      ignored.
  1470.           The following macro would define the Alt-C key to save all
  1471.      current modified files, execute the make command while swapping Bingo
  1472.      out to disk, saving the errors in the ERRS file, then load the ERRS
  1473.      file.
  1474.           #c        macro save_all swap_execute 'make > errs' return return
  1475.                     load_file 'errs.' return
  1476.           A more interesting variant of this is the one I used prior to
  1477.      installing the auto-error processing:
  1478.           #c        macro modify_save_all swap_execute 'make > errs' return
  1479.                     return window_bottom load_file 'errs.' return
  1480.      This version will attempt to put the errors file in the bottom-most
  1481.      window, and it will initially only save those files as have been
  1482.      modified.
  1483.           After adding  the auto-error processing, I added a more complex
  1484.      version of this macro:
  1485.           #c        macro modify_save_all 
  1486.                     swap_execute 'make > errs' return return 
  1487.                     window_one window_split 
  1488.                     load_file 'errs.' return 
  1489.                     window_previous 
  1490.                     window_resize down_arrow down_arrow down_arrow
  1491.                          down_arrow down_arrow down_arrow return
  1492.                     setup_err_parse 'errs.' return 
  1493.                     return next_error
  1494.      This version saves all modified files, executes MAKE as before, and
  1495.      returns.  When it returns, it makes sure there is but one window,
  1496.      splits the current window, and loads in the ERRS file.  It then
  1497.      resizes it so the bottom window is smaller, resets the error parsing
  1498.      to the ERRS file, then searches for the next (first) error.
  1499.           This last version is very sweet to use if you have a compiler
  1500.      which generates agreeable error files.  Bingo will work with most
  1501.      compilers I have come across, including the Borland and Microsoft
  1502.      compilers/assemblers.  With the Microsoft tools, you may have to tweak
  1503.      the compile flags a bit to get a usable format.
  1504.  
  1505.      'open_end' Key Identifier
  1506.      -------------------------
  1507.           KEYCFG allows the use of the 'open_end' identifier in macros to
  1508.      force Bingo to fetch string input from the keyboard.  For example:
  1509.           f1   macro search open_end 'i' return
  1510.      will execute the search function, wait for the user to input the
  1511.      target string, then input 'i' for the search modifier and do the
  1512.      search.
  1513.  
  1514.                            Bingo 3.00 Reference Manual
  1515.                                        20
  1516.  
  1517.  
  1518.  
  1519.  
  1520.           'open_end' is effective only for string input --- single key
  1521.      input situations will not respond to it.  In effect, 'open_end' is a
  1522.      very special key name.
  1523.  
  1524.      'cur_file' Key Identifier
  1525.      -------------------------
  1526.           KEYCFG also allows the use of the 'cur_file' identifier in macros
  1527.      to expand into the current file's name (less path) in string input. 
  1528.      For example:
  1529.           f1   macro load_file cur_file return
  1530.      will force the reload of the current file, providing it is located in
  1531.      the current directory.
  1532.  
  1533.      'interpret' Function Identifier
  1534.      -------------------------------
  1535.           The 'interpret' function is recognized by Keycfg but not by Bingo
  1536.      itself.  Its function is to act as a "silent" 'exec_chess' function. 
  1537.      Used just the same as 'exec_chess', it differs only in that nothing is
  1538.      displayed on the screen.  It is therefore a bit quicker and more
  1539.      suited for mapping keys to Chess functions.  For example:
  1540.  
  1541.           #z        macro interpret 'hello_world' return
  1542.  
  1543.      would tie Alt-Z to the 'hello_world' Chess function.
  1544.  
  1545.      Section 2 - Chess Code
  1546.      ----------------------
  1547.      The second section of a .CFG file is the section of Chess code.  To
  1548.      signal KEYCFG that this section has been reached, use the token
  1549.      'chess-begin' on a line by itself.  The token 'chess-end' signals the
  1550.      end of this section.  All text between these tokens will be
  1551.      interpreted as Chess code.  See the manual on the Chess procedural
  1552.      language for a further explanation.
  1553.  
  1554.      KEYCFG Command Line Options
  1555.      ----------------------------
  1556.           KEYCFG recognizes three command line options.  One is a shortcut:
  1557.  
  1558.           keycfg !
  1559.  
  1560.      tells KEYCFG to assume the name of the configuration file is
  1561.      BINGO.CFG, and that the keyset file is KEYCFG.SET.  I put this in
  1562.      primarily for my own use, as I run KEYCFG often during development.
  1563.  
  1564.           'KEYCFG names' will provide an alphabetical list of all of the
  1565.      function names which are currently recognized.  Useful to have.
  1566.  
  1567.           Likewise 'KEYCFG keys' will list all recognized keynames and
  1568.      mouse events.  Also useful to have.
  1569.  
  1570.  
  1571.  
  1572.                            Bingo 3.00 Reference Manual
  1573.                                        21
  1574.  
  1575.  
  1576.  
  1577.  
  1578.      The KEYINFO Key Information Utility
  1579.      -----------------------------------
  1580.           KEYCFG takes plain text key definitions and 'compiles' them into
  1581.      .SET file format, KEYINFO takes a .SET file and turns it into its
  1582.      plain-text equivalent.  Further, KEYINFO can take a saved Single-Key
  1583.      macro and turn it into its plain-text format.  This means that you can
  1584.      define a macro on the fly and get it converted back to its text format
  1585.      where you can tune it to your heart's content.
  1586.  
  1587.           KEYCFG can be invoked two ways.  First, to turn a .SET file into
  1588.      its text equivalent, use:
  1589.  
  1590.           KEYCFG <.SET file name>
  1591.  
  1592.      To turn a saved macro file into its text equivalent, use:
  1593.  
  1594.           KEYCFG -s <macro file name>
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.                            Bingo 3.00 Reference Manual
  1631.                                        22
  1632.  
  1633.  
  1634.  
  1635.  
  1636.      Starting Bingo
  1637.      --------------
  1638.           Starting Bingo is simple.  Simply type:
  1639.  
  1640.                be <filespec> <filespec> ...
  1641.                be.exe <filespec> <filespec> ...
  1642.  
  1643.      at the DOS prompt, and you are off.  One of several things will
  1644.      happen.  If each filename you gave is discreet (i.e., no wildcards),
  1645.      the files named will each be loaded, one after another.  If a filespec
  1646.      matches more than one file, a directory list of matching files will
  1647.      pop up which will allow you to choose a file or files.  See the
  1648.      section on the Directory List for further explanation.
  1649.           If no filespec is given, Bingo will behave as if you issued 'be
  1650.      *.*'.
  1651.  
  1652.           You may also specify the starting line and column position for
  1653.      the each loaded file.  The '/pLL:CC' switch allows you to do this. 
  1654.      For example:
  1655.  
  1656.           be test.doc test2.doc /p10:5 /p20
  1657.  
  1658.      would load the file TEST.DOC and move to the 10th line, 5th column. 
  1659.      TEST2.DOC would begin on the 20th line.  If you do not give a column
  1660.      argument, the first column will be assumed.  
  1661.  
  1662.           Similarly, you can use the '-x<filename>' switch to run a macro
  1663.      file on startup.  For Example:
  1664.  
  1665.           be test.doc test2.doc /xfun1.mac
  1666.  
  1667.      would load both files, then execute the macro file FUN1.MAC inside the
  1668.      buffer holding TEST.DOC.
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.                            Bingo 3.00 Reference Manual
  1689.                                        23
  1690.  
  1691.  
  1692.  
  1693.  
  1694.      The BINGO.INI file
  1695.      ------------------
  1696.           With version 2.11a, Bingo's configuration settings are stored in
  1697.      a file called BINGO.INI.  When Bingo starts up, it will look first in
  1698.      the local directory, then in BE.EXE's execution directory.  If it is
  1699.      found in neither of these places, you will not be notified and Bingo
  1700.      will run with the default settings it is shipped with.  To create
  1701.      BINGO.INI, use the 'save_settings' function.
  1702.           Moving the settings to a seperate file means that the settings
  1703.      and the key configurations are held in 2 seperate files.  This allows
  1704.      you to effortlessly use executable compression programs such as LZEXE
  1705.      (TM) and PKLite (TM) to compress BE.EXE; no longer is BE.EXE in the
  1706.      habit of modifying itself.
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.                            Bingo 3.00 Reference Manual
  1747.                                        24
  1748.  
  1749.  
  1750.  
  1751.  
  1752.      Bingo and Larger Screen Displays
  1753.      --------------------------------
  1754.           EGA, VGA, and MCGA video display cards support displays larger
  1755.      than the standard 25 rows by 80 columns.  Bingo does support editing
  1756.      on these screen sizes.   Bingo can be set to handle screen displays in
  1757.      one of three ways:
  1758.           -    Bingo can be set to detect the current screen type and
  1759.                dimensions, and do retrace checking.
  1760.           -    Bingo can be set to detect the current screen type and size,
  1761.                but do no retrace checking.
  1762.           -    Bingo can be set to switch to 43/50 line mode if it is
  1763.                supported.  No retrace checking will be performed.
  1764.      As shipped, Bingo chooses the middle of these three courses.  The
  1765.      retrace checking is only done if you are using a color display with a
  1766.      25x80 configuration.
  1767.           There was a bug in v2.11 with regard to screen size; Bingo
  1768.      started up in 25x80 size regardless of this setting. 
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.                            Bingo 3.00 Reference Manual
  1805.                                        25
  1806.  
  1807.  
  1808.  
  1809.  
  1810.      Bingo's Menu System
  1811.      -------------------
  1812.           Bingo implements a comprehensive menu structure to aid you in
  1813.      utilizing Bingo's functions.  Many people, myself included, do not
  1814.      necessarily wish to spend the time to assign every function we need to
  1815.      a keyboard equivalent.  This requires a large time investment before
  1816.      you can begin using the editor.  On the other hand, it is very
  1817.      irritating when you need a particular function and cannot use it
  1818.      because you did not have the foresight to assigned it to a key
  1819.      combination.  
  1820.           Bingo's menu system was designed to handle just this situation. 
  1821.      By assigning the 'main_menu' function to a keystroke, you effectively
  1822.      have access to *every* function Bingo has.  First, almost all of
  1823.      Bingo's functions are directly accessible from the menus, grouped in
  1824.      logical sets, following a logical hierarchy.  The remaining functions
  1825.      can be accessed by selecting the 'eXtras' sub-menu, then the 'Pick &
  1826.      exec' function.  This function then allows you to choose from a list
  1827.      of *all* supported functions.
  1828.           I have found that for most people, it pays to assign your most
  1829.      commonly needed functions to keystrokes, and then rely on the menu
  1830.      system for the ones which are used to a lesser degree.  The logical
  1831.      structure of the menus allows for easy access to less frequently
  1832.      needed functions.
  1833.           The menus themselves work quite easily.  A list of possibilities
  1834.      is presented.  A menubar can be moved up and down to make your choice;
  1835.      pressing Return selects the choice.  In addition, each choice has a
  1836.      highlighted character; pressing this character will automatically
  1837.      select the choice.
  1838.           In some cases you may be presented with a child menu.  Here again
  1839.      you may make a choice as before, with one additional bit of
  1840.      functionality.  If you are in a child menu, pressing the PgUp or PgDn
  1841.      keys will move you to the previous or next sibling menu, respectively. 
  1842.           The Print menu, as well as all of the configuration menus, is a
  1843.      multiple menu.  This means that after you have made a choice, the
  1844.      action will be executed and you will be returned to the menu at the
  1845.      same spot.  I have found that when printing and configuring, people
  1846.      usually want to do more than one task.  Menus which are multiple will
  1847.      have an asterisk ('*') printed at the bottom of the menu border.
  1848.           The Escape key always closes the current child menu.  If you are
  1849.      at the top menu, it quits the menu system entirely.  To see how your
  1850.      mouse, if you have one, interacts with the menus, see the section
  1851.      concerning Bingo and a mouse.
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.                            Bingo 3.00 Reference Manual
  1863.                                        26
  1864.  
  1865.  
  1866.  
  1867.  
  1868.      Bingo's User Interface
  1869.      ----------------------
  1870.           Bingo's user interface comes in two flavors.  The default method,
  1871.      which long-time users of Bingo will recognize, uses bordered boxes in
  1872.      the center of the screen to display and ask for user input.  The
  1873.      second type of interface, which uses a command line at the bottom of
  1874.      the screen, is new for v3.00.  Which interface style is used is
  1875.      controled by the setting of the 'conf_dialogue' option.  Regardless of
  1876.      the setting, the input rules are the same for the 4 main types of
  1877.      interface interaction. They are as follows.
  1878.  
  1879.           String Entry Boxes:
  1880.  
  1881.           These are the boxes which ask you for string input.  The easiest
  1882.      example is when Bingo asks you for a filename.  These boxes allow you
  1883.      to enter string input in a flexible manner.  A wide variety of
  1884.      keystrokes are available to aid in this endeavor; they are:
  1885.  
  1886.                ^F/CursRt      One Character Forward
  1887.                ^B/CursLt      One Character Backward
  1888.                ^A/Home        Beginning of Line
  1889.                ^E/End         End of Line
  1890.                ^K/CtrlEnd     Delete to Eol
  1891.                CtrlHome       Delete to Bol
  1892.                ^Y             Delete Line
  1893.                Tab            Insert from Paste Buffer 
  1894.                Insert         Toggle insert Mode
  1895.                Alt-A          Invoke the ASCII Table
  1896.                Up Arrow       In Boxes interface mode, pops up a list of
  1897.                               the previous 15 strings entered.  In Command-
  1898.                               Line interface mode, displays the previous
  1899.                               string entered.  Repeatedly hitting this key
  1900.                               will cycle through the entire list.
  1901.                Down Arrow     Valid only in Command-line mode, this cycles
  1902.                               through the list in the opposite direction as
  1903.                               Up Arrow.
  1904.                PgUp           In Boxes interface mode, pops up a list of
  1905.                               the previous 15 filenames edited.  In
  1906.                               Command-Line interface mode, displays the
  1907.                               previous filename entered.  Repeatedly
  1908.                               hitting this key will cycle through the
  1909.                               entire list of filenames.
  1910.                PgDn           Valid only in Command-line mode, this cycles
  1911.                               through the list in the opposite direction as
  1912.                               PgUp.
  1913.  
  1914.           Pressing <Escape> will abort out of the string entry operation.
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.                            Bingo 3.00 Reference Manual
  1921.                                        27
  1922.  
  1923.  
  1924.  
  1925.  
  1926.           Yes/No Boxes:
  1927.  
  1928.           These are the boxes which require a yes or no answer to a
  1929.      question.  An example of this is when you 'quit' a file and the file
  1930.      has been modified.  Bingo will ask you if you wish to save the file.
  1931.           Each time you enter a Yes/No box, one of the two options will be
  1932.      will be highlighted (in the Command-Line method, the 'Y' or 'N' will
  1933.      be capitalized to indicate the default).  This is the default option
  1934.      which will be selected if you press <Return>.  In the Boxes interface
  1935.      method, using the Left and Right Arrow keys, you can change the
  1936.      current selection.  Alternatively, you can press either the 'y' key
  1937.      (any case) for a yes answer, or the 'n' key (any case) for a no
  1938.      answer.
  1939.           Pressing <Escape> will abort the operation.
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.                            Bingo 3.00 Reference Manual
  1979.                                        28
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.           Non-Editable Display Boxes:
  1986.  
  1987.           The easiest example of this type of box is the Help box, or the
  1988.      Info box.  This type of box simply displays a number of lines within a
  1989.      box.  By using the Up and Down arrows (also the space bar) you may
  1990.      scroll by lines, and by using the Page Up and Page Down keys you may
  1991.      scroll by pages.
  1992.           Any other keystroke will exit the box.
  1993.           The Command-Line method, when turned on, will display the same
  1994.      box as the Boxes method; there is no command line equivalent.
  1995.  
  1996.  
  1997.           List-Picking Boxes:
  1998.  
  1999.           The best example of this type of dialogue box occurs when the
  2000.      'directory list picker' pops up.  This type of box is very similar to
  2001.      the Non-Editable box discussed above, but the idea here is not merely
  2002.      to display information but to facilitate making a choice.  There will
  2003.      be a menubar highlighted, showing the current selection.  You may move
  2004.      this bar up and down using the arrow and page keys.  Pressing <Return>
  2005.      will selection this option.
  2006.           Additionally, the initial character of each selection may be
  2007.      highlighted.  If so, pressing the corresponding character will
  2008.      automatically select this option.
  2009.           Finally, even if the leading characters of each selection are not
  2010.      so highlighted, you may "step" through the selections by pressing
  2011.      letter keys.  The menubar will move to the next selection which starts
  2012.      with the letter pressed.  If necessary, the menubar will wrap to the
  2013.      top of the list (Bingo will beep in this case).  In the case of the
  2014.      directory picker, the leading '\' characters of directory entries will
  2015.      be ignored.
  2016.           As is the custom, the <Escape> key will abort the operation.
  2017.           Again, there is no Command-Line equivalent; a bordered boxe will
  2018.      be used.
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.                            Bingo 3.00 Reference Manual
  2037.                                        29
  2038.  
  2039.  
  2040.  
  2041.  
  2042.      Directory Lister
  2043.      ----------------
  2044.           One of the extremely useful features of Bingo is its directory
  2045.      lister.  Often, Bingo will ask for a filename.  If the name you give
  2046.      matches more than one file, in the case of wildcards, for instance,
  2047.      the lister will appear with a list of matches and all subdirectories
  2048.      in the current directory.  There are several features embedded in this
  2049.      lister to assist you in choosing a file. 
  2050.           First, all subdirectory entries in the current directory will are
  2051.      shown at the top, with a '\' character preceding them.  Selecting any
  2052.      of these will cause the lister to change to that directory.
  2053.           Second, pressing a letter causes the Lister to move to the next
  2054.      filename whose first character matches the letter pressed.  A beep
  2055.      will sound if the search wraps around to the beginning.
  2056.           The list is sorted alphabetically by name, but subdirectory
  2057.      entries come first.  The last entry is always the New Specification
  2058.      entry, which allows you to type in a new specification, perhaps
  2059.      another drive if it is necessary. 
  2060.           You have 2 choices in the directory lister other than choosing a
  2061.      file.  The second-last option in the list, "Load All Matching Files",
  2062.      will, as you might guess, load all the files shown in the list.  It
  2063.      will not attempt to load subdirectories.  The last option, "New File
  2064.      Spec", allows you to re-choose the directory specification.
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.                            Bingo 3.00 Reference Manual
  2095.                                        30
  2096.  
  2097.  
  2098.  
  2099.  
  2100.      Bingo and File Names
  2101.      --------------------
  2102.           Many times during normal operation, Bingo will ask you for a
  2103.      filename.  Bingo potentially handles filenames slightly differently
  2104.      than plain vanilla DOS.  In particular, let's examine the difference
  2105.      between
  2106.  
  2107.           'thisfile'          &         'thisfile.'
  2108.  
  2109.           The first does not contain a period.  In this case, Bingo will do
  2110.      two things.  First, it will, for each defined default extension, check
  2111.      if the file with that extension exists.  If it does, it will use that
  2112.      filename.  Possibly, one of the default extensions is '.*'.  This
  2113.      would lead you to a directory list picker.  
  2114.           The second contains the trailing period, and so will be used as
  2115.      is.  So, in order to specify a file ignoring the default extensions,
  2116.      you must add the trailing period.
  2117.           Additionally, Bingo accepts either '/' or '\' characters as file
  2118.      delimiters.  This will make life a little easier on those of us who
  2119.      use UNIX systems regularly.  Finally, version 2.10 allows the use of
  2120.      the '..' and '.' directory primitives.
  2121.           Also, there are two other specifications you my use. ':home:'
  2122.      will be translated by Bingo into Bingo's original directory.  So,
  2123.      ':home:bingo.hlp' would be translated to 'bingo.hlp' in Bingo's home
  2124.      directory.  Likewise, ':temp:' will be mapped to the value of the TEMP
  2125.      environment variable.  If TEMP is not defined, it will use the TMP
  2126.      environment variable.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.                            Bingo 3.00 Reference Manual
  2153.                                        31
  2154.  
  2155.  
  2156.  
  2157.  
  2158.      The Status Line
  2159.      ---------------
  2160.           On the bottom line of each window in Bingo's display is the
  2161.      status line.  This line communicates several valuable pieces of
  2162.      information.  On the left side of the line, the current line and
  2163.      column are displayed.  Next are a series of flags:
  2164.                  a     Autoindent
  2165.                  b     Box Draw Mode
  2166.                  c     C mode 
  2167.                  i     Insert mode
  2168.                  m     Matching Mode
  2169.                  r     Recording Macro
  2170.                  t     Smart Tabs
  2171.                  w     Wordwrap
  2172.                  z     Zoom mode
  2173.      For each of these flags, if the letter is capitalized, it indicates
  2174.      that the toggle is on, while a lowercase character indicates the
  2175.      option is toggled off.
  2176.           Next you will see something looking like [x/y] where 'y' is the
  2177.      number of files in the ring, and 'x' is the position of the current
  2178.      file in the ring.
  2179.           Finally, the full pathname comes.  If it is prefaced with an
  2180.      asterisk '*', it means the file has been modified.
  2181.           At the end of one of the on screen status lines, you will see
  2182.      either one or three little pyramids.  If there is a single pyramid,
  2183.      that means it is not the active window.  If there are three pyramids,
  2184.      they tell you which is the active window.  If the three pyramids are
  2185.      pointing up, the full-width window above the status line is the
  2186.      current window.  If the three pyramids point to the left, this means
  2187.      that of the two windows above the status line, the one on the left is
  2188.      the active window.  If the three pyramids point to the right, the
  2189.      window on the right is active.
  2190.           The same rules concerning the direction of the pyramids hold for
  2191.      inactive status lines, except that only one pyramid will be present.
  2192.           If this all sounds complicated, don't worry.  Open a few windows
  2193.      and move among them; it will become much clearer.
  2194.           Finally, on the right end of the current status line, a 'T' or
  2195.      'F' character will be shown.  This represent whether the last
  2196.      operation Bingo executed returned a value of True or False; i.e.,
  2197.      whether it worked.
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.                            Bingo 3.00 Reference Manual
  2211.                                        32
  2212.  
  2213.  
  2214.  
  2215.  
  2216.      Bingo & The Mouse
  2217.      -----------------
  2218.           Bingo has the capacity to make extensive use of a Microsoft
  2219.      (trademark, copyright, and kudos to Microsoft) compatible mouse,
  2220.      should you have one installed.  In order for the mouse to work, three
  2221.      things must be true:
  2222.           1) It must be connected to the computer properly.  See your mouse
  2223.      manual for instructions.
  2224.           2) You must have your mouse driver installed properly.  Again,
  2225.      see your mouse manual for instructions on how to accomplish this.
  2226.           3) You must have the 'Use Mouse' option turned on, found in the
  2227.      General configuration menu. Bingo is shipped with mouse use turned on.
  2228.  
  2229.           Bingo is designed to allow users of three button mice to make
  2230.      full use of all three buttons (I have a three button mouse).  However,
  2231.      users with two button mice will only lose a little functionality when
  2232.      it comes to programming the mouse, and no functionality at all when it
  2233.      comes to dealing with the menus and dialogue boxes.
  2234.           It is generally easy to tell if the mouse is working; the status
  2235.      line will have four additional "buttons", each consisting of three
  2236.      arrows enclosed in square braces.  Also, to conserve space, the
  2237.      filename will be shown without its full path.
  2238.  
  2239.      The Mouse Cursor
  2240.      ----------------
  2241.           The mouse cursor will appear on your screen as a solid, non-
  2242.      blinking block, which changes color depending on the underlying color. 
  2243.      It should be possible to move the cursor over the entire screen.  If
  2244.      the mouse cursor is present, it means that a response with the mouse
  2245.      is possible.  If it is not visible, this means that at this point, no
  2246.      mouse response makes sense.
  2247.  
  2248.      The Mouse at the General Editing Level
  2249.      --------------------------------------
  2250.           At the general editing screen, Bingo has 20 programmable mouse
  2251.      events.   The programmable events are handled exactly as key
  2252.      assignments are handled: through KEYCFG.  These are the mouse names:
  2253.  
  2254.                              Mouse Event Identifiers
  2255.  
  2256.           Three_buttons                 Left_right_buttons
  2257.           Left_middle_buttons           Multiple_left_button
  2258.           Single_left_button            Right_middle_buttons
  2259.           Multiple_right_button         Single_right_button
  2260.           Multiple_middle_button        Single_middle_button
  2261.  
  2262.           Single_pyramids               Multiple_pyramids
  2263.           Single_up_arrow               Single_down_arrow
  2264.           Single_left_arrow             Single_right_arrow
  2265.           Multiple_up_arrow             Multiple_down_arrow
  2266.           Multiple_left_arrow           Multiple_right_arrow
  2267.  
  2268.                            Bingo 3.00 Reference Manual
  2269.                                        33
  2270.  
  2271.  
  2272.  
  2273.  
  2274.           The first ten are concerned simply with what happens when you
  2275.      press the corresponding button sequence.  Note that users of two-
  2276.      button devices will only be able to utilize five of these, those
  2277.      dealing with the left and right buttons.
  2278.           The second ten refer to the 5 "hot spots" on the active status
  2279.      line.  There are two for each button, one for a single click and one
  2280.      for a double click.
  2281.  
  2282.           Now that you know of these event names, what can you do with
  2283.      them?  Well, you can assign them anything you could assign a key.  In
  2284.      addition, two special functions are provided to help deal with the
  2285.      mouse:
  2286.  
  2287.           snap_to_mouse_xy:
  2288.                this function moves the cursor to the current mouse
  2289.                position.  If necessary, it will change the active window.
  2290.  
  2291.           mouse_scroll:
  2292.                this function is kind of an expanded snap_to_mouse_xy. 
  2293.                First, it moves the cursor to the mouse position.  Then, as
  2294.                long as a mouse button is held down, the screen will scroll
  2295.                in the following manner:
  2296.                     1) If you are in the upper 1/8 of the screen you will
  2297.                     scroll up.
  2298.                     2) If you are in the next 1/8 of the screen, the screen
  2299.                     will scroll up, but more slowly.
  2300.                     3) If you are in the lower 1/8 of the screen you will
  2301.                     scroll down.
  2302.                     4) If you are in the next lower 1/8 of the screen, the
  2303.                     screen will scroll down, but more slowly.
  2304.                If you are elsewhere on the screen, you simply move the
  2305.                cursor about.  This makes 'click & drag' operations
  2306.                possible.
  2307.  
  2308.  
  2309.      Combining these with other functions, quite powerful mouse events can
  2310.      be programmed.  For example:
  2311.  
  2312.      Single_left_button       snap_to_mouse_xy
  2313.      Single_right_button      macro snap_to_mouse_xy point_mark
  2314.      Multiple_left_button     macro snap_to_mouse_xy linemark
  2315.                                    mouse_scroll linemark
  2316.  
  2317.      The first simply moves the cursor, while the second moves the cursor
  2318.      and drops a point mark.  The third lets you scroll about the file,
  2319.      delineating an area to be marked.
  2320.  
  2321.           The ten "hot spots" can also be programmed as if they were keys.
  2322.        
  2323.      Single_down_arrow        cursor_down
  2324.      Double_down_arrow        down_page
  2325.  
  2326.                            Bingo 3.00 Reference Manual
  2327.                                        34
  2328.  
  2329.  
  2330.  
  2331.  
  2332.      Here, this has defined the down arrow button to respond with a
  2333.      cursor_down if a single click occurs on it, or a down_page if a double
  2334.      click occurs on it.  
  2335.           These "buttons" work a little differently than you might expect -
  2336.      - as long as you hold the mouse button down, the function will
  2337.      repetitively execute.  So, if you double click on the down arrow
  2338.      "button" and hold the second click down, you will see the file whiz by
  2339.      at a truly astonishing speed.  The speed with which the functions are
  2340.      repetitively executed can be governed using the 'conf_mdelay'
  2341.      function.
  2342.           These 20 events give you the user an unparalleled degree of
  2343.      control over how the mouse responds.
  2344.  
  2345.      The Mouse and The Menus
  2346.      -----------------------
  2347.           The mouse would not be very useful if it was not well integrated
  2348.      into the menu system.  Great pains have been taken to make mouse use
  2349.      easy and intuitive with respect to the menu system.  
  2350.           It is very simple.  The left mouse button selects something, and
  2351.      the right mouse button closes the current menu.  However, there are a
  2352.      few refinements.
  2353.           If the item you select with a single left click is in the
  2354.      rightmost menu, the effect is the same as if you had moved to that
  2355.      selection and hit <return>.  If the item is not the rightmost menu,
  2356.      say the it is in the Main menu and you currently have the Block menu
  2357.      open, then you will simply be moved to the selection, with the other
  2358.      menus closed for you.  However, no equivalent <return> will be
  2359.      executed. 
  2360.           If, however, you use a double left click, the selection will be
  2361.      executed regardless of where it was on the menu hierarchy.  Any extra
  2362.      open menus will be closed to bring you to the selected level.
  2363.           Likewise, a single right click will close the current menu. 
  2364.      However, a double click will close *all* open menus.
  2365.           Note that this gives you some capabilities which are not
  2366.      available from the keyboard.
  2367.           If the above sounds complicated, don't worry.  In practice, it is
  2368.      very easy.  I would suggest you restrict yourself to single clicks
  2369.      when you begin, then move to double clicks when you are sure of what a
  2370.      single click would do.  You will very quickly find that the menus are
  2371.      effortlessly intertwined with the mouse.
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.                            Bingo 3.00 Reference Manual
  2385.                                        35
  2386.  
  2387.  
  2388.  
  2389.  
  2390.      The Mouse & Dialogue Boxes
  2391.      --------------------------
  2392.           Throughout Bingo, you will encounter many dialogue boxes.  There
  2393.      are four main types, and all support mouse use where appropriate. They
  2394.      are:
  2395.  
  2396.           String Entry Boxes:
  2397.  
  2398.           These are the boxes which ask you for string input.  The easiest
  2399.      example is when Bingo asks you for a filename.  There are only a few
  2400.      mouse options in these boxes; most of the time you must enter text
  2401.      from the keyboard.
  2402.           However, there are three supported button events.  A single left
  2403.      click has the same effect as a <return>; it accepts the current
  2404.      string.  A double left click wipes out the string; it in effect is a
  2405.      Control-Y equivalent.  Finally, any right button click is the
  2406.      equivalent of an <Escape> key.
  2407.  
  2408.           Yes/No Boxes:
  2409.  
  2410.           These are the boxes which require a yes or no answer to a
  2411.      question.  The easiest example of this is in the configuration
  2412.      options, where you are asked if you wish to toggle the option.  By
  2413.      placing the mouse cursor over the [Yes] selection and pressing the
  2414.      left mouse button, you answer in the affirmative.  Likewise, placing
  2415.      the mouse cursor over the [No] selection and pressing the left button
  2416.      answers in the negative.  
  2417.           As usual, pressing the right mouse button is equivalent to the
  2418.      <Escape> key.
  2419.  
  2420.           Non-Editable Display Boxes:
  2421.  
  2422.           The easiest example of this type of box is the Help box, or the
  2423.      Info box.  If there are more lines than fit within the box, up and
  2424.      down arrow boxes will appear in the upper and lower right hand corners
  2425.      of the box.  By moving the mouse cursor to the corresponding box and
  2426.      holding a mouse button down, the display will scroll in the
  2427.      corresponding direction.
  2428.           As expected, the right button exits.
  2429.  
  2430.           List-Picking Boxes:
  2431.  
  2432.           The best example of this type of dialogue box occurs when the
  2433.      'directory list picker' pops up.  Here, as in the Non-Editable Display
  2434.      Boxes, up and down arrow boxes will appear if necessary.  Furthermore,
  2435.      moving the mouse cursor to a particular selection and pressing a
  2436.      single left key will move the menubar to that selection.
  2437.           Moving the mouse cursor to a particular selection and double left
  2438.      clicking will select that particular selection as if you had moved the
  2439.      menubar there and typed <return>.
  2440.           As always, the right button is the equivalent of typing <Escape>.
  2441.  
  2442.                            Bingo 3.00 Reference Manual
  2443.                                        36
  2444.  
  2445.  
  2446.  
  2447.  
  2448.      The Mouse and The ASCII Table
  2449.      -----------------------------
  2450.           The mouse is also tightly integrated with the ASCII table
  2451.      function, 'ascii_table'.  Here, single left clicking on a character
  2452.      moves the cursor to it (updating the display).  Double left clicking
  2453.      selects the character and adds it to the string.
  2454.           Single left clicking on the [Bspace] bar is equivalent to typing
  2455.      <backspace>; it removes one character from the string.  A double left
  2456.      click on this spot zeroes the string entirely.
  2457.           As always, clicking the right button is the equivalent of typing
  2458.      <Escape>.
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.                            Bingo 3.00 Reference Manual
  2501.                                        37
  2502.  
  2503.  
  2504.  
  2505.  
  2506.                                 Bingo & A Network
  2507.                                 -----------------
  2508.           Bingo will function quite well within the network environment,
  2509.      but there are some concerns network administrators should be aware of. 
  2510.      Several operations cause Bingo to save temporary data to disk.  Swap-
  2511.      execution, automatic backups, and 'quit_and_save_status' all flush
  2512.      data to disk files for storage.  
  2513.           By default, Bingo looks for an environment variable called "TEMP"
  2514.      (first choice) or "TMP" (second choice).  If found, it will be used as
  2515.      a directory specification for storage of the above temporary files. 
  2516.      If neither of the two environment variables is defined, the root of
  2517.      the current drive will be used.
  2518.           This enables network administrators to set up Bingo so that users
  2519.      can run the same executable, but by giving each user a seperate
  2520.      definition of "TEMP" (or "TMP"), each user's temporary storage area
  2521.      will be seperate from one another.
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.                            Bingo 3.00 Reference Manual
  2559.                                        38
  2560.  
  2561.  
  2562.  
  2563.  
  2564.                              Bingo Function Summary
  2565.                              ----------------------
  2566.  
  2567.           This section will give a overview of the basic functionality
  2568.      included in Bingo.  For each section, detail for some of the more
  2569.      intricate functions will be presented.  After the narrative section, a
  2570.      reference list for each function in the section will be presented. 
  2571.      The index at the end of the manual can be used as an alphabetical
  2572.      cross-reference.  Have fun!
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.                            Bingo 3.00 Reference Manual
  2617.                                        39
  2618.  
  2619.  
  2620.  
  2621.  
  2622.                                 Configuring Bingo
  2623.                                 -----------------
  2624.  
  2625.           Bingo is extremely configurable.  To access the configuration
  2626.      menu, select the 'Config' option from the main menu, or attach keys to
  2627.      particular configuration functions.
  2628.           To make the current selections permanent, select the "Write
  2629.      setting" option found on the main configuration menu.
  2630.           There is one item of interest of interest.  There are nine
  2631.      settings which as of version 2.01 are maintained on a per buffer
  2632.      basis.  These settings are the ones saved in profile files, and are
  2633.      found on the 'Text Settings' config menu.  Each time you change these
  2634.      with a 'conf_' function, you change both the underlying default (used
  2635.      when new files are brought in) and the current buffer's settings.  For
  2636.      a few settings, there are also 'toggle_' functions, such as
  2637.      'toggle_cmode'.  These change only the current buffer's settings.
  2638.           As of version 2.11a, Bingo's runtime settings are kept in a
  2639.      seperate file, BINGO.INI.  This allows for far more flexibility.  
  2640.  
  2641.                                   Function List
  2642.      ----------------------------------------------------------------------
  2643.  
  2644.                                                               Save_settings
  2645.      ---------------------------------------------------------------------
  2646.      Saves the current config settings to the file you name, usually
  2647.      BINGO.INI.  Upon startup, Bingo looks in the local directory then in
  2648.      Bingo's execution directory for BINGO.INI.
  2649.  
  2650.                                                                  Conf_color
  2651.      ----------------------------------------------------------------------
  2652.      Configure the color settings.  You select the color you are interested
  2653.      in by pressing the appropriate color.  Then, by watching the bottom
  2654.      line on the screen and pressing the up and down arrow keys for the
  2655.      foreground and the pageup and pagedown keys for the background, you
  2656.      select the color you want.  Pressing return will select the color. 
  2657.      For the Overscan (border) attribute, only the background attribute
  2658.      matters.
  2659.  
  2660.                                                                    Conf_lfs
  2661.      ----------------------------------------------------------------------
  2662.      Alter the lfs-only setting.  If on, this setting has Bingo write files
  2663.      with lines separated by LF's only, in the UNIX fashion.  Otherwise,
  2664.      Bingo uses CR-LF pairs to delimit lines.
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.                            Bingo 3.00 Reference Manual
  2675.                                        40
  2676.  
  2677.  
  2678.  
  2679.  
  2680.                                                                Conf_backups
  2681.      ----------------------------------------------------------------------
  2682.      Allows you to specify the character Bingo uses to automatically create
  2683.      backup files when a file is saved.  The algorithm used takes the
  2684.      character you give and uses it to flesh out the extension of the
  2685.      original file to three characters; if the extension is already 3
  2686.      characters long, the backup character replaces the third character of
  2687.      the extension.  For example, if the backup character is '$', 
  2688.                main.c         becomes        main.c$$
  2689.                main.cp        becomes        main.cp$
  2690.                main.pas       becomes        main.pa$
  2691.  
  2692.                                                                    Conf_eof
  2693.      ----------------------------------------------------------------------
  2694.      Alter whether Bingo writes a EOF character at the end of files (^Z).
  2695.  
  2696.                                                                 Conf_search
  2697.      ----------------------------------------------------------------------
  2698.      Allows you to pre-determine which flags (I/G/B/etc...) will be set
  2699.      initially for a search and replace attempts.
  2700.  
  2701.                                                              Conf_stripping
  2702.      ----------------------------------------------------------------------
  2703.      Configure whether Bingo strips the high bit of characters when
  2704.      reading.  Only really useful when reading Wordstar files.
  2705.  
  2706.                                                                Conf_rmargin
  2707.      ----------------------------------------------------------------------
  2708.      Set the right margin.  Affects paragraph reformatting and word wrap. 
  2709.      This changes the current buffer's setting and the global setting.    
  2710.  
  2711.                                                             Conf_autoindent
  2712.      ----------------------------------------------------------------------
  2713.      Set whether Bingo uses autoindent mode.  Affects paragraph
  2714.      reformatting and word wrap.  This changes both the current buffer's
  2715.      setting and the global setting.
  2716.  
  2717.                                                               Conf_wordwrap
  2718.      ----------------------------------------------------------------------
  2719.      Set the word wrap mode.  This changes both the current buffer's
  2720.      setting and the global setting.
  2721.  
  2722.                                                                 Conf_insert
  2723.      ----------------------------------------------------------------------
  2724.      Alter whether Bingo is in insert/overwrite mode.  This changes both
  2725.      the current buffer's setting and the global setting.
  2726.  
  2727.                                                                Conf_tabsize
  2728.      ----------------------------------------------------------------------
  2729.      Set the tabsize.  This changes both the current buffer's setting and
  2730.      the global setting.
  2731.  
  2732.                            Bingo 3.00 Reference Manual
  2733.                                        41
  2734.  
  2735.  
  2736.  
  2737.  
  2738.                                                              Conf_backspace
  2739.      ----------------------------------------------------------------------
  2740.      Configure the backspace mode:
  2741.                          1. Delete single chars
  2742.                          2. Delete spaces back to tab setting
  2743.                          3. Delete spaces to left margin
  2744.                          4. Rubout
  2745.      This changes both the current buffer's setting and the global setting.
  2746.  
  2747.                                                                  Conf_cmode
  2748.      ----------------------------------------------------------------------
  2749.      Configure whether Bingo uses C Mode on *.c and *.h files.  Allows you
  2750.      to choose between two different modes of C indention:
  2751.  
  2752.                for(i=0;i<10;i++){       and       for(i=0;i<10;i++)
  2753.                     ...stuff...                   {
  2754.                }                                       ...stuff...
  2755.                                                   }
  2756.      This changes both the current buffer's setting and the global setting.
  2757.  
  2758.                                                                  Conf_sound
  2759.      ----------------------------------------------------------------------
  2760.      Allows you to set the frequency of the beep Bingo uses.  Setting it to
  2761.      zero will effectively turn off the sound.
  2762.  
  2763.                                                                 Conf_mdelay
  2764.      ----------------------------------------------------------------------
  2765.      Allows you to specify the timing delay between repetitions of a
  2766.      function(s) being executed while a mouse button is held down.  For
  2767.      example, on reasonably quick machines, paging down while holding the
  2768.      mouse button down on one of the status line "hotspots" occurred so
  2769.      fast with version 2.0 so as to be useless.  
  2770.  
  2771.                                                            Conf_button_wait
  2772.      ----------------------------------------------------------------------
  2773.      Allows you to configure, in milliseconds, the amount of delay Bingo
  2774.      will wait for the second click of a double click.
  2775.  
  2776.                                                                 Conf_shadow
  2777.      ----------------------------------------------------------------------
  2778.      Silly function, configures whether Bingo uses "shadow" boxes.  Play
  2779.      with it, amaze your friends.
  2780.  
  2781.                                                              Conf_win_close
  2782.      ----------------------------------------------------------------------
  2783.      Controls whether Bingo automatically closes a window when the file is
  2784.      closed.
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.                            Bingo 3.00 Reference Manual
  2791.                                        42
  2792.  
  2793.  
  2794.  
  2795.  
  2796.                                                                Conf_def_ext
  2797.      ----------------------------------------------------------------------
  2798.      Allows you to specify the file extensions Bingo will attempt to use
  2799.      when you specify a filename without '.'.  The extensions are checked
  2800.      in order.
  2801.  
  2802.                                                             Conf_video_mode
  2803.      ----------------------------------------------------------------------
  2804.      Allows you to choose from between three screen handling options:
  2805.                     - autodetect with retrace checking
  2806.                     - autodetect with no retrace checking
  2807.                     - 43 or 50 line mode, if supported
  2808.      Retrace checking will only be in effect if there are only 25 lines to
  2809.      be displayed.
  2810.  
  2811.                                                                    Conf_prn
  2812.      ----------------------------------------------------------------------
  2813.      Set the printer destination, between the default serial port, the
  2814.      default parallel port, or a file.
  2815.  
  2816.                                                                  Conf_tmarg
  2817.      ----------------------------------------------------------------------
  2818.      Set the top margin, in terms of number of lines.
  2819.  
  2820.                                                                  Conf_bmarg
  2821.      ----------------------------------------------------------------------
  2822.      Set the bottom margin, in terms of number of lines.
  2823.  
  2824.                                                                  Conf_lmarg
  2825.      ----------------------------------------------------------------------
  2826.      Set the left margin which will be used when printing, in terms of
  2827.      spaces.
  2828.  
  2829.                                                              Conf_lines_per
  2830.      ----------------------------------------------------------------------
  2831.      Set the lines per page, counting the top margin.
  2832.  
  2833.                                                              Conf_kill_size
  2834.      ----------------------------------------------------------------------
  2835.      Alters the size of the kill buffer.
  2836.  
  2837.                                                              Conf_cut_stack
  2838.      ----------------------------------------------------------------------
  2839.      Allows you to choose whether text about to be discarded from the paste
  2840.      buffer should be placed on the stack.  If this is on, this will slow
  2841.      block operations down a bit, but it is a nice safety feature.
  2842.  
  2843.  
  2844.  
  2845.  
  2846.  
  2847.  
  2848.                            Bingo 3.00 Reference Manual
  2849.                                        43
  2850.  
  2851.  
  2852.  
  2853.  
  2854.                                                               Conf_auto_cut
  2855.      ----------------------------------------------------------------------
  2856.      Allows you to toggle how the 'cut' & 'copy' functions respond when no
  2857.      block has been marked.  If auto cut is active, these functions will
  2858.      cut (or copy) the current line.  If auto cut is not active, the
  2859.      current line will be Linemarked.
  2860.  
  2861.                                                             Conf_smart_tabs
  2862.      ----------------------------------------------------------------------
  2863.      Allows you to specify whether or not "Smart" tabs are active.  Smart
  2864.      tabs cause the 'insert_tab' function to tab over to the same column as
  2865.      the next nonspace character on the line previous.  This changes both
  2866.      the current buffer's setting and the global setting.
  2867.  
  2868.                                                               Conf_matching
  2869.      ----------------------------------------------------------------------
  2870.      Configures matching mode.  If matching mode is active, entering a
  2871.      '[{<(' character will cause its matching close member to be entered
  2872.      automatically.  This changes both the current buffer's setting and the
  2873.      global setting.
  2874.  
  2875.                                                                  Conf_trail
  2876.      ----------------------------------------------------------------------
  2877.      Allows you to configure whether or not Bingo automatically strips
  2878.      trailing spaces.
  2879.  
  2880.                                                                 Conf_bounce
  2881.      ----------------------------------------------------------------------
  2882.      Allows you what cursor movement paradigm Bingo uses.  If Bounce mode
  2883.      is active, Bingo views the entire document as one long string of
  2884.      characters.  Thus, you cannot move off of exiting text.  Further, the
  2885.      cursor will automatically wrap at the end of lines.  If Bounce mode is
  2886.      turned off, cursor movement is by the more traditional method, where
  2887.      you can move any where (horizontally) you wish.
  2888.  
  2889.                                                               Conf_key_bios
  2890.      ----------------------------------------------------------------------
  2891.      This governs whether or not Bingo will use the Extended Keyboard Bios
  2892.      if it is found.  On some machines, Bingo may identify it incorrectly,
  2893.      or there may be compatibility problems.  This function allows you to
  2894.      tell Bingo to disregard the extended Bios, even if it is found.  If
  2895.      this is on, the two sets of arrow keys, for example, will be
  2896.      recognized as different.  They will therefore have to be defined
  2897.      separately in your keyboard config file.
  2898.  
  2899.                                                                Conf_erronly
  2900.      ----------------------------------------------------------------------
  2901.      Allows you to tell Bingo to further restrict valid error lines to
  2902.      those containing the word 'error' (any case).  
  2903.  
  2904.  
  2905.  
  2906.                            Bingo 3.00 Reference Manual
  2907.                                        44
  2908.  
  2909.  
  2910.  
  2911.  
  2912.                                                                  Conf_mouse
  2913.      ----------------------------------------------------------------------
  2914.      Controls whether or not Bingo uses a Mouse, if it finds one.
  2915.  
  2916.                                                                Conf_profile
  2917.      ----------------------------------------------------------------------
  2918.      Controls whether Bingo will check for, and load if found, the profile
  2919.      file of a file's file extension each time a file is loaded.
  2920.  
  2921.                                                                   Conf_word
  2922.      ----------------------------------------------------------------------
  2923.      Allows you to edit the string containing what characters are not part
  2924.      of a word.
  2925.  
  2926.                                                               Conf_scr_save
  2927.      ----------------------------------------------------------------------
  2928.      Controls whether Bingo will save, and then restore, the DOS screen
  2929.      upon startup and exit.  Will cost you some memory.
  2930.  
  2931.                                                              Conf_name_save
  2932.      ----------------------------------------------------------------------
  2933.      Controls whether, and how, Bingo saves the last 15 files edited.  You
  2934.      can turn it off, tell it to save the info in the current directory
  2935.      (where Bingo looks first upon startup), or in Bingo's home directory.
  2936.  
  2937.                                                                 Conf_delims
  2938.      ----------------------------------------------------------------------
  2939.      Allows you to input and edit pairs of delimiters for Bingo to balance
  2940.      with the 'match_delim' function.  Both delimiters must be non-blank.
  2941.  
  2942.                                                            Conf_eol_display
  2943.      ----------------------------------------------------------------------
  2944.      Allows you to enter the ASCII decimal value of the character to be
  2945.      displayed as the end of line character.  The default is 32, the space
  2946.      character.
  2947.  
  2948.                                                           Conf_exit_to_pick
  2949.      ----------------------------------------------------------------------
  2950.      Controls Bingo's actions upon exit.  If turned on, Bingo will popup an
  2951.      edit box when you quit the program (except when you exit through the
  2952.      abort_all function).
  2953.  
  2954.  
  2955.                                                                Conf_prn_eol
  2956.      ----------------------------------------------------------------------
  2957.      Controls whether Bingo terminates lines with a linefeed only or a
  2958.      carraige return/linefeed pair while printing.
  2959.  
  2960.                                                             Conf_prn_lineno
  2961.      ----------------------------------------------------------------------
  2962.      Sets whether or not Bingo prints line numbers on each line it prints.
  2963.  
  2964.                            Bingo 3.00 Reference Manual
  2965.                                        45
  2966.  
  2967.  
  2968.  
  2969.  
  2970.                                                             Conf_prn_header
  2971.      ----------------------------------------------------------------------
  2972.      Sets whether or not Bingo prints page headers on each page it prints. 
  2973.      Headers consist of the filename, the page number, and the date/time.
  2974.  
  2975.                                                          Conf_timed_backups
  2976.      ----------------------------------------------------------------------
  2977.      Allows you to specify how often, in terms of changes, to save a backup
  2978.      of a file.  A value of zero (0) indicates no automatic backups are to
  2979.      take place.  The value input becomes the defult value for any
  2980.      subsequently entered files, and becomes the value for the current
  2981.      file; it does not change the value for any existing files.  Any
  2982.      operation which changes the file will increment the change counter. 
  2983.      The current number of changes for each file is displayed on the info
  2984.      screen.  When the predetermined number of changes has occurred, the
  2985.      file is saved as 
  2986.                  backXXXX.bak 
  2987.           where XXXX is the buffer 4 digit id number.  This id number is
  2988.      unique over an editing session, and is displayed as part of the info
  2989.      screen.  The backup files are identical to the files themselves,
  2990.      except that the first line contains the original name of the file
  2991.      (full pathname) and the time of the backup.  So if there is a
  2992.      catastrophic failure (your cat chews through the power cord, for
  2993.      instance), you can explore the back*.bck files and recover recent
  2994.      version of your files.
  2995.           The *.bak files are stored in the location specified by the
  2996.      "TEMP" (or "TMP") environment variable; if this environment variable
  2997.      is not set the files will be stored in the root directory of the
  2998.      current drive.
  2999.  
  3000.           *Note*: Be very careful with setting this value.  Generally, a
  3001.           setting between 256 and 1024 is very useful.  However, if you are
  3002.           editing a multi-megabyte file, backups can be a large pain
  3003.           because of the time involved in saving the file.  
  3004.  
  3005.                                                              Conf_carriage 
  3006.      ----------------------------------------------------------------------
  3007.      This function toggles on and off whether or not the 'carraige'
  3008.      function splits lines. 
  3009.  
  3010.                                                           Conf_delete_join 
  3011.      ----------------------------------------------------------------------
  3012.      This function toggles on and off whether or not deleting at the end of
  3013.      a line brings the next line up. 
  3014.                                                              Conf_wild_load
  3015.      ----------------------------------------------------------------------
  3016.      This function is used to control how Bingo interprets wildcard
  3017.      characters in filenames.  There are 4 choices:
  3018.           - never load wildcard matches automatically
  3019.           - load wildcard matches only at startup
  3020.           - load wildcard matches every *but* startup
  3021.  
  3022.                            Bingo 3.00 Reference Manual
  3023.                                        46
  3024.  
  3025.  
  3026.  
  3027.  
  3028.           - always automatically load wildcard matches
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.                            Bingo 3.00 Reference Manual
  3081.                                        47
  3082.  
  3083.  
  3084.  
  3085.  
  3086.                                                            Conf_chess_trace
  3087.      ---------------------------------------------------------------------
  3088.      This is used to turn on the Chess execution trace capability.  When
  3089.      enabled, each Chess program executed will stop at each line and
  3090.      display it.  You will be able to continue execution or halt it.
  3091.  
  3092.                                                               Conf_dialogue
  3093.      ----------------------------------------------------------------------
  3094.      This is used to set whether string, yes/no, and character dialogue
  3095.      takes place in bordered boxes in the center of the screen or at the
  3096.      bottom of the screen.
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.                            Bingo 3.00 Reference Manual
  3139.                                        48
  3140.  
  3141.  
  3142.  
  3143.  
  3144.                                   Basic Editing
  3145.                                   -------------
  3146.  
  3147.           Basic editing concerns deletion and insertion of characters. 
  3148.      Bingo provides a number of ways to delete text without recourse to the
  3149.      block operation.  Five of these operations push deleted text onto the
  3150.      unkill stack -- 'del_eol', 'del_line', 'del_bol', 'del_word_lt', and
  3151.      'del_word_rt'.   
  3152.  
  3153.      The Destructive Backspace
  3154.      -------------------------
  3155.           Bingo supports four backspace deletion modes.  The first is the
  3156.      old favorite, the simple one character destructive backspace.  The
  3157.      second mode destructively deletes back to the previous tab stop,
  3158.      provided there are only spaces in the way.  If there are non-space
  3159.      characters in the way, it functions as in mode 1.
  3160.           The third mode deletes all the way to the left margin (column 1),
  3161.      provided it consists only of spaces.  Again, if there are non-space
  3162.      characters, it functions as mode 2.
  3163.           The fourth mode is termed a rubout.  In this mode, Bingo will
  3164.      backup one character and overwrite that character with a space.  
  3165.  
  3166.      The 'Default_' Functions
  3167.      ------------------------
  3168.           Bingo has two deletion functions which are variations on others. 
  3169.      The 'default_bspace' function is a variation on the 'back_space'
  3170.      function while the 'default_del' function is a variation on the
  3171.      'del_char'.  Both work in essentially the same manner.  If a block is
  3172.      marked, a 'cut' function is performed.  If no block is marked, the
  3173.      corresponding function.  
  3174.  
  3175.                                   Function List
  3176.      ----------------------------------------------------------------------
  3177.  
  3178.                                                                  Insert_tab
  3179.      ----------------------------------------------------------------------
  3180.      Insert the number of spaces needed to move the cursor to the next tab
  3181.      stop, based on the current tabsize.
  3182.  
  3183.                                                                    Carriage
  3184.      ----------------------------------------------------------------------
  3185.      If the 'conf_carraige' setting is turned on, this function splits the
  3186.      current line by moving the cursor to the start of the next line,
  3187.      taking everything to the right of the cursor along for the ride.  If
  3188.      this moves you onto the bottom line of the window, the line will be
  3189.      centered on the screen.  Depending on C mode and the AutoIndent mode
  3190.      settings, automatic indentation of some type may be performed.  If the
  3191.      'conf_carraige' setting is turned off, this function simply moves the
  3192.      cursor down one line.
  3193.  
  3194.  
  3195.  
  3196.                            Bingo 3.00 Reference Manual
  3197.                                        49
  3198.  
  3199.  
  3200.  
  3201.  
  3202.                                                                  Toggle_ins
  3203.      ----------------------------------------------------------------------
  3204.      Toggles the insert/overwrite mode. Changes only the setting of the
  3205.      current buffer.
  3206.                                                                 Toggle_wrap
  3207.      ----------------------------------------------------------------------
  3208.      Toggles the word wrap setting. Changes only the setting of the current
  3209.      buffer.
  3210.  
  3211.                                                                Toggle_cmode
  3212.      ----------------------------------------------------------------------
  3213.      Toggles the C mode setting, regardless of the file name. Changes only
  3214.      the setting of the current buffer.
  3215.  
  3216.                                                           Toggle_autoindent
  3217.      ----------------------------------------------------------------------
  3218.      Toggle the autoindent setting.  Changes only the setting of the
  3219.      current buffer.
  3220.  
  3221.                                                                    Del_char
  3222.      ----------------------------------------------------------------------
  3223.      Deletes the current character at the cursor position; if it was at the
  3224.      end of a line and the 'conf_delete_join' setting is turned on, brings
  3225.      the next line up.
  3226.  
  3227.                                                                  Back_space
  3228.      ----------------------------------------------------------------------
  3229.      If the 'conf_delete_join' setting is turned on, performs a destructive
  3230.      backspace, if the current deletion mode is not Rubout.  If the current
  3231.      mode is Rubout, the cursor will back up one space and the current
  3232.      character will be blanked.based on the current deletion mode in
  3233.      effect.  If the setting is turned off, performs a rubout.
  3234.  
  3235.                                                                    Del_line
  3236.      ----------------------------------------------------------------------
  3237.      Deletes the entire current line, regardless of position.
  3238.  
  3239.                                                                     Del_eol
  3240.      ----------------------------------------------------------------------
  3241.      Deletes all text to the end of the line; if at the end of a line,
  3242.      joins the lines if the 'conf_delete_join' setting is turned on.
  3243.  
  3244.  
  3245.      Del_bol
  3246.      ----------------------------------------------------------------------
  3247.      Deletes all text to beginning of line, moves to first column. If at
  3248.      the beginning, joins the line with the previous line if the
  3249.      'conf_delete_join' setting is turned on.
  3250.  
  3251.  
  3252.  
  3253.  
  3254.                            Bingo 3.00 Reference Manual
  3255.                                        50
  3256.  
  3257.  
  3258.  
  3259.  
  3260.                                                                 Default_del
  3261.      ----------------------------------------------------------------------
  3262.      Does one of two things depending on whether or not a block is marked. 
  3263.      If a block is marked, the 'cut' function is executed.  If no block is
  3264.      marked, the 'del_char' function is executed.
  3265.  
  3266.                                                              Default_bspace
  3267.      ----------------------------------------------------------------------
  3268.      Similar to 'default_del', except that if no block is marked, a
  3269.      'back_space' function is executed.
  3270.  
  3271.                                                                 Del_word_rt
  3272.      ----------------------------------------------------------------------
  3273.      Deletes from the current cursor position to the start of the next word
  3274.      to the right.
  3275.  
  3276.                                                                 Del_word_lt
  3277.      ----------------------------------------------------------------------
  3278.      Deletes from the current cursor position to the start of the next word
  3279.      to the left.
  3280.  
  3281.                                                                   New_line 
  3282.      ----------------------------------------------------------------------
  3283.      Inserts a new line before the current line, without moving the cursor.
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.                            Bingo 3.00 Reference Manual
  3313.                                        51
  3314.  
  3315.  
  3316.  
  3317.  
  3318.                                  Block Handling
  3319.                                  --------------
  3320.  
  3321.      Marking
  3322.      -------
  3323.           Block marking is extremely flexible.  Three types of marking are
  3324.      supported.  Line marking considers lines to be the smallest
  3325.      indivisible chunks of text.  It is primarily used when editing large
  3326.      sections of program code, since much of this type of editing involves
  3327.      moving lines.
  3328.           Point marking, on the other hand, considers single characters to
  3329.      be the smallest indivisible portions of text.  this is useful for
  3330.      replicating portions of lines, rather than whole lines. 
  3331.           While Point marking "snakes" the mark from one point to the next,
  3332.      Vertical marking lets you define corners of a column-oriented block.
  3333.           There are two methods of marking, governed by the 'conf_automark'
  3334.      function.  If auto-marking is turned off, marking proceeds as follows:
  3335.      go to the beginning of the block you wish to mark; execute the
  3336.      appropriate mark function for the block type you are interested in;
  3337.      move to the end of the block you wish to mark; mark again.
  3338.           If automarking is turned on, things work differently.  Now, when
  3339.      you mark, you turn marking 'on'.  As you move about the file, the
  3340.      block will follow you until you decide to mark the end.  However, you
  3341.      do not have to mark the end of the block; Bingo will simply assume the
  3342.      current position is the other end of the block.
  3343.           You can also use the 'extend_mark' function.  This simply extends
  3344.      the current marking scheme to the current cursor position.  If there
  3345.      is no mark in the file, 'Extend_mark' will display an error message.
  3346.  
  3347.      Operations on Blocks
  3348.      --------------------
  3349.           Bingo supports two slightly different sets of block operations. 
  3350.      The first set will be familiar to users of many programming editors,
  3351.      while the second will bring back memories of any Wordstar compatible
  3352.      editor they may have used.
  3353.           The first set of operations consists of three functions: 'cut',
  3354.      'copy', 'paste'.  'cut' snips the marked region to the block buffer,
  3355.      removing it from the file.  'copy' does the same thing, but it leaves
  3356.      the marked text intact in the file.  In both cases, if nothing is
  3357.      marked and you have this option turned on, Bingo will assume you wish
  3358.      the current line to be linemarked.
  3359.           'paste' is very simple: whatever is currently in the block buffer
  3360.      is placed at the current cursor position, based on the marking method
  3361.      used.  If the contents were point marked, the contents are simply
  3362.      'squirted' into the text.  If the contents were line marked, the lines
  3363.      are inserted above the current line.
  3364.           There is also an alternate type of paste operation, that of
  3365.      'paste_replace'.  In this case, the paste buffer's contents overwrite
  3366.      the needed amount of space in the text, rather than squirting between
  3367.      existing text.  This type of pasting will only work for Column and
  3368.      Line marked blocks.  Be careful! You can hurt yourself with this one.
  3369.  
  3370.                            Bingo 3.00 Reference Manual
  3371.                                        52
  3372.  
  3373.  
  3374.  
  3375.  
  3376.           The second type of block operations available are similar in
  3377.      nature to those used by Wordstar-compatible editors.  Block operations
  3378.      consist of three steps: mark the text, move to the destination
  3379.      position, invoke the function.
  3380.           'block_move' moves the currently marked blocked of text to the
  3381.      current cursor position.  'block_copy' does the same thing, except it
  3382.      leaves a copy behind.  'block_move' and 'block_copy' will not allow
  3383.      you to manipulate blocks between files.
  3384.           'block_delete' is functionally identical to Cut, except that it
  3385.      requires that a block be marked; the setting of the auto linecut
  3386.      toggle has no effect on 'block_delete'.
  3387.           Remember that since each file can have independently marked
  3388.      sections of text, you cannot use the 'block_move' & 'block_copy'
  3389.      functions to manipulate text between seperate files.
  3390.  
  3391.      Named Buffers
  3392.      -------------
  3393.           In addition to the default paste buffer, Bingo supports 26 named
  3394.      buffers, 'a'-'z'.  In order to change which buffer is currently in
  3395.      use, use the 'name_buffer' function.  Press the letter of the buffer
  3396.      you want, or <return> for the default buffer.  Until you change the
  3397.      buffer, Bingo will use the currently named buffer for all its
  3398.      operations.  All buffers will be saved when a swapping operation is
  3399.      being done.
  3400.  
  3401.      Emacs_yank
  3402.      ----------
  3403.           This function melds the unkill stack and the paste buffer
  3404.      together in the following manner.  If the most recent block
  3405.      operation/deletion was a block operation, 'emacs_yank' works exactly
  3406.      like 'paste', pushing the paste buffer contents into the text.  If the
  3407.      most recent operation was a deletion (word, line, -eol, -bol),
  3408.      'emacs_yank' works like the 'paste_kill' function, pulling text from
  3409.      the undo stack without disturbing its contents.  This allows you to
  3410.      use the deletion commands to manipulate text in concert with the paste
  3411.      buffer operations.  Note that this is not identical to EMACS's 'yank'
  3412.      functionality, but it is useful.
  3413.  
  3414.                                   Function List
  3415.      ----------------------------------------------------------------------
  3416.  
  3417.                                                                   Line_mark
  3418.      ----------------------------------------------------------------------
  3419.      Drop a line marker.  The block will be expanded or shrunk, depending
  3420.      on the last drop made.  Line marks consider the line to be the
  3421.      smallest markable element of text.
  3422.  
  3423.                                                                  Point_mark
  3424.      ----------------------------------------------------------------------
  3425.      Drop a point marker.  The block will be expanded or shrunk, depending
  3426.      on the last drop made.  Point marks consider the character to be the
  3427.  
  3428.                            Bingo 3.00 Reference Manual
  3429.                                        53
  3430.  
  3431.  
  3432.  
  3433.  
  3434.      smallest markable element of text.
  3435.  
  3436.                                                               Vertical_mark
  3437.      ----------------------------------------------------------------------
  3438.      Drop a vertical marker. Vertical, or column, blocks are defined by and
  3439.      upper and an opposing lower corner.
  3440.  
  3441.                                                                 Extend_mark
  3442.      ----------------------------------------------------------------------
  3443.      Extends the current marked block, using whichever marking scheme is in
  3444.      place.  Does nothing if no block is marked.
  3445.  
  3446.                                                                      Unmark
  3447.      ----------------------------------------------------------------------
  3448.      Unmark all text in current buffer.
  3449.  
  3450.                                                                         Cut
  3451.      ----------------------------------------------------------------------
  3452.      Cut the marked text to the block buffer.  The marked text is deleted
  3453.      from the file.  
  3454.  
  3455.                                                                        Copy
  3456.      ----------------------------------------------------------------------
  3457.      Copy the marked text to the block buffer.  The marked text is NOT
  3458.      deleted from the file.
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.                            Bingo 3.00 Reference Manual
  3487.                                        54
  3488.  
  3489.  
  3490.  
  3491.  
  3492.                                                                       Paste
  3493.      ----------------------------------------------------------------------
  3494.      Pastes the contents of the block buffer into the text at the current
  3495.      position.  If the contents were linemarked, the contents will be
  3496.      pasted, as lines, above the current line.  
  3497.  
  3498.                                                               Paste_replace
  3499.      ----------------------------------------------------------------------
  3500.      Pastes the contents of the block buffer at the current location,
  3501.      overwriting the needed amount of space.  This is only valid when the
  3502.      paste buffer is Line or Vertical marked.
  3503.  
  3504.                                                                  Block_move
  3505.      ----------------------------------------------------------------------
  3506.      Moves the currently marked blocked of text to the cursor position.
  3507.  
  3508.                                                                  Block_copy
  3509.      ----------------------------------------------------------------------
  3510.      Copies the currently marked blocked of text to the cursor position.
  3511.  
  3512.                                                                Block_delete
  3513.      ----------------------------------------------------------------------
  3514.      Deletes the currently marked block of text to the block buffer;
  3515.      identical to cut.
  3516.  
  3517.                                                                  Block_save
  3518.      ----------------------------------------------------------------------
  3519.      Writes the currently marked text to a file.
  3520.  
  3521.                                                          Swap_buf_and_block
  3522.      ----------------------------------------------------------------------
  3523.      Takes the currently marked portion, and swaps it with the current
  3524.      contents of the paste buffer.  The two blocks need not be of the same
  3525.      type.
  3526.  
  3527.                                                                Report_bsize
  3528.      ----------------------------------------------------------------------
  3529.      Reports the number of lines and characters (line breaks in point
  3530.      marked blocks count as one character) the currently marked block
  3531.      spans.
  3532.  
  3533.                                                                 Name_buffer
  3534.      ----------------------------------------------------------------------
  3535.      Allows you to change the current paste buffer.  <return> specifies the
  3536.      default buffer, and 'a'-'z' specify their respective buffers.
  3537.  
  3538.                                                                 Buffer_info
  3539.      ----------------------------------------------------------------------
  3540.      Displays various pertinent information about all the paste buffers.
  3541.  
  3542.  
  3543.  
  3544.                            Bingo 3.00 Reference Manual
  3545.                                        55
  3546.  
  3547.  
  3548.  
  3549.  
  3550.                                                                 Look_buffer
  3551.      ----------------------------------------------------------------------
  3552.      Displays the contents of the current buffer in a non-editable window. 
  3553.      This only displays up to the first 100 lines in the buffer.
  3554.  
  3555.                                                                  Cut_append
  3556.      ----------------------------------------------------------------------
  3557.      Works exactly like 'Cut', except it appends the marked text to the
  3558.      current contents of the buffer.  The text in the buffer and the marked
  3559.      text must be of the same type.
  3560.  
  3561.                                                                 Copy_append
  3562.      ----------------------------------------------------------------------
  3563.      Just as 'Cut_append', but performs a copy instead.
  3564.  
  3565.                                                                  Emacs_yank
  3566.      ----------------------------------------------------------------------
  3567.      Melds the unkill stack and the paste buffer together.  If the most
  3568.      recent block operation/deletion was a block operation, 'emacs_yank'
  3569.      works exactly like 'paste', pushing the paste buffer contents into the
  3570.      text.  If the most recent operation was a deletion (word, line, -eol,
  3571.      -bol), 'emacs_yank' works like the 'paste_kill' function, pulling text
  3572.      from the undo stack without disturbing its contents.  This allows you
  3573.      to use the deletion commands to manipulate text in concert with the
  3574.      paste buffer operations.
  3575.  
  3576.                                                                   Mark_word
  3577.      ----------------------------------------------------------------------
  3578.      This marks the current word, using the defined word characters.  Only
  3579.      legal word text is marked.
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.                            Bingo 3.00 Reference Manual
  3603.                                        56
  3604.  
  3605.  
  3606.  
  3607.  
  3608.                              Error Parsing and Undo
  3609.                              ----------------------
  3610.  
  3611.      How Error Parsing Works
  3612.      -----------------------
  3613.           Bingo provides the capability to automatically parse compiler
  3614.      generated error messages.  The procedure for this is fairly simple.
  3615.           First, you must have a text file containing the error output of
  3616.      the compiler (or assembler) in question.  This usually obtained by
  3617.      running said compiler and redirecting its output to a file.  Bring
  3618.      this file into the editor.
  3619.           Next, call the 'setup_err_parse' function, and give it the name
  3620.      of the file.  If the name matches a file in the ring, Bingo will tell
  3621.      you that error processing is setup properly.
  3622.           Now it is simple; simple call the 'next_error' or 'prev_error'
  3623.      functions.  The following things will happen:
  3624.  
  3625.           1)   Bingo will see if a next (or previous) error can be found. 
  3626.           If not, it will report that no more errors exist.
  3627.           2)   Assuming an error line is found, the filename and line
  3628.           number will be picked out of the line.  Bingo will perform and
  3629.           edit_file operation on the filename, then jump to the offending
  3630.           line.  All of this will happen within the current window.
  3631.           3)   Also, any onscreen window which contains the file being
  3632.           parsed will be updated.  The current error line will be
  3633.           highlighted automatically.
  3634.  
  3635.      As you can see, error parsing is super useful.  For a further example
  3636.      of how it works, see the example macro in the section on the KEYCFG
  3637.      program.
  3638.  
  3639.      Error Parsing Method
  3640.      --------------------
  3641.           Bingo parses error files using a "fuzzy" or "best-guess"
  3642.      algorithm.  It checks each line as follows.
  3643.           First, Bingo attempts to find a valid filename on the line.  The
  3644.      filename must contain a period, and it must have a file extension. 
  3645.      The filename cannot be a .EXE or .COM file, and it may contain the
  3646.      full path specification (new with version 2.10e).
  3647.           After finding such a filename, Bingo verifies that the named file
  3648.      exists on disk or in the current ring.  If it does, Bingo now begins
  3649.      to look for the line number within the error file.  Bingo will look
  3650.      for the first number to follow the filename, and use this as the line
  3651.      number.
  3652.           If both a filename & a line number are found, the line will be
  3653.      recognized as a valid error/warning line. 
  3654.  
  3655.           This algorithm will work for the Borland and Microsoft
  3656.      developmental tools.  However, in some cases, you may have to consult
  3657.      your manual in order to find what command-line switches have to be set
  3658.      for your compiler to output errors in a usable message format.
  3659.  
  3660.                            Bingo 3.00 Reference Manual
  3661.                                        57
  3662.  
  3663.  
  3664.  
  3665.  
  3666.  
  3667.           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3668.           !!!!!!!! Note that linker errors do not !!!!!!!!!
  3669.           !!!!!!!! have line numbers, and so will !!!!!!!!!
  3670.           !!!!!!!!      not be recognized.        !!!!!!!!!
  3671.           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3672.  
  3673.      However, whenever Bingo encounters a situation where there are no more
  3674.      errors, it will display a message saying so.  Further, it will display
  3675.      a portion of the last non-blank line in the error file on the message
  3676.      line with the "No more Errors" message, so you can verify that all
  3677.      went well.
  3678.  
  3679.      Undo Capabilities
  3680.      -----------------
  3681.           Bingo has several capabilities to allow you to recover from
  3682.      recent mistakes.  The 'Restore_line' function, will simply recall the
  3683.      state of the current line to what it was when you first arrived.  This
  3684.      is good only as long as you do not move from the line; once you leave
  3685.      the line, its original state is lost forever.
  3686.           This type of error-recovery is good for small things, but
  3687.      something more substantial was needed.  So Bingo keeps a stack of
  3688.      recently deleted items; text deleted by 'del_eol', 'del_bol', and
  3689.      'del_line' functions.  This stack is kept in reverse order; that is,
  3690.      the most recently deleted text is placed in top of the undo stack.
  3691.           Additionally, you have an option regarding text cut to the paste
  3692.      buffer.  Normally, when you place text into the paste buffer (Using
  3693.      the 'cut', 'copy', etc. functions), if the paste buffer already
  3694.      contains something, that text is discarded.  However, if you set the
  3695.      'cut to stack' option on (in the General Config Menu, or with the
  3696.      'conf_cut_stack' function), this text will be pushed onto the stack
  3697.      also.
  3698.           You can control the size of the undo stack using the
  3699.      'conf_kill_size' function (1 to 10240 lines), or through the config
  3700.      menus.  You cannot, however, turn it off.
  3701.  
  3702.      Manipulating the Undo Stack
  3703.      ---------------------------
  3704.           There are three functions available to help you deal with the
  3705.      undo stack.  'rotate_kill' will popup a list of the current stack's
  3706.      contents.  By moving the menu bar and hitting return, you can move the
  3707.      selected entry to the top of the stack.
  3708.           'unkill' and 'paste_kill' are very similar.  They take the top
  3709.      member of the stack and insert it in the current position.  If the top
  3710.      member of the stack was a full line, it will be inserted above the
  3711.      current line.  'unkill' also removes the top member from the stack.
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.                            Bingo 3.00 Reference Manual
  3719.                                        58
  3720.  
  3721.  
  3722.  
  3723.  
  3724.                                   Function List
  3725.      ----------------------------------------------------------------------
  3726.  
  3727.                                                             Setup_err_parse
  3728.      ----------------------------------------------------------------------
  3729.      This function will prompt you for a filename.  Bingo will from then on
  3730.      use the named file as the error file.  This must be called before
  3731.      next_error, prev_error, or last_error are called.
  3732.  
  3733.                                                                  Next_error
  3734.      ----------------------------------------------------------------------
  3735.      Moves, within the current window, to the next error as found in the
  3736.      current error file.  If no more errors can be found, Bingo will say
  3737.      so, and display the last non-blank line in the error file.  Otherwise,
  3738.      Bingo will edit the appropriate file into the current window, as well
  3739.      as highlighting the line in the error file being referenced.
  3740.  
  3741.                                                                  Prev_error
  3742.      ----------------------------------------------------------------------
  3743.      Same as error except it moves backward through the error file.
  3744.  
  3745.                                                                  Last_error
  3746.      ----------------------------------------------------------------------
  3747.      Redisplays the last error message, if there was one.
  3748.  
  3749.                                                                 Rotate_kill
  3750.      ----------------------------------------------------------------------
  3751.      Pops up the current kill stack and allows you to arbitrarily move a
  3752.      line of text to the top of the stack.
  3753.  
  3754.                                                                      Unkill
  3755.      ----------------------------------------------------------------------
  3756.      Inserts the top member of the stack at the current position.  If the
  3757.      top member of the stack was a full line, it is inserted above the
  3758.      current line.  Removes the top member from the stack.
  3759.  
  3760.                                                                  Paste_kill
  3761.      ----------------------------------------------------------------------
  3762.      Inserts the top member of the stack at the current position.  If the
  3763.      top member of the stack was a full line, it is inserted above the
  3764.      current line.  Leaves the stack itself alone.
  3765.  
  3766.                                                                Restore_line
  3767.      ----------------------------------------------------------------------
  3768.      Restores the current line to its former form.
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.                            Bingo 3.00 Reference Manual
  3777.                                        59
  3778.  
  3779.  
  3780.  
  3781.  
  3782.                                   File Handling
  3783.                                   -------------
  3784.  
  3785.           Bingo has extensive file handling capabilities, more than almost
  3786.      any other editor available.  Literally, there is little you could want
  3787.      to do with a file which Bingo will not let you do.  
  3788.           A couple of words are in order about the file format.  Bingo
  3789.      cares not at all if the file you are reading is delimited by carriage-
  3790.      return/linefeed pairs or just linefeed characters; Bingo will read
  3791.      both with equal aplomb.  Similarly, Bingo doesn't object to files
  3792.      ending with the EOF character (ASCII 26).  On output, the output
  3793.      format is governed by the configuration settings accessible through
  3794.      the 'conf_eof' and 'conf_lfs' functions. 
  3795.  
  3796.                                   Function List
  3797.      ----------------------------------------------------------------------
  3798.  
  3799.                                                                   Edit_file
  3800.      ----------------------------------------------------------------------
  3801.      Asks for a filename. If the file is already in the ring, it simply
  3802.      switches to it.  If it is not in the ring, it loads the file.
  3803.  
  3804.                                                                 Choose_file
  3805.      ----------------------------------------------------------------------
  3806.      Pops up a list of current files in the ring, and an option for a new
  3807.      file.  Selecting the New File option performs an 'edit_file' function.
  3808.  
  3809.                                                                   Load_file
  3810.      ----------------------------------------------------------------------
  3811.      After asking for a filename, it loads that file from disk.  If the
  3812.      file is already in the ring, the in-memory version is first deleted
  3813.      from memory.
  3814.  
  3815.                                                                 Rename_file
  3816.      ----------------------------------------------------------------------
  3817.      Renames current file.  Does not save it to disk automatically.
  3818.  
  3819.                                                                 Switch_file
  3820.      ----------------------------------------------------------------------
  3821.      Switches to a different file, performing a quit on the current file
  3822.      first.  If you escape out of the quit option, the switch operation
  3823.      will abort.
  3824.  
  3825.                                                                   Save_file
  3826.      ----------------------------------------------------------------------
  3827.      Saves the current file; does not exit.
  3828.  
  3829.                                                                 Modify_save
  3830.      ----------------------------------------------------------------------
  3831.      Saves current file ONLY if it has been modified.
  3832.  
  3833.  
  3834.                            Bingo 3.00 Reference Manual
  3835.                                        60
  3836.  
  3837.  
  3838.  
  3839.  
  3840.                                                                        Quit
  3841.      ----------------------------------------------------------------------
  3842.      Exits current file.  If the file was modified, it will ask you if you
  3843.      wish to save the file; a <return> indicates yes.
  3844.  
  3845.                                                                       Abort
  3846.      ----------------------------------------------------------------------
  3847.      Exits the file, no protection, no save.
  3848.  
  3849.                                                                        File
  3850.      ----------------------------------------------------------------------
  3851.      Saves and exits current file.
  3852.  
  3853.                                                                   Next_file
  3854.      ----------------------------------------------------------------------
  3855.      Moves to the next file in ring.
  3856.  
  3857.                                                                   Prev_file
  3858.      ----------------------------------------------------------------------
  3859.      Moves to the previous file in the ring.
  3860.  
  3861.                                                                    Quit_all
  3862.      ----------------------------------------------------------------------
  3863.      Performs a quit on each file in the ring.
  3864.  
  3865.                                                                   Abort_all
  3866.      ----------------------------------------------------------------------
  3867.      Aborts all files, no questions asks.
  3868.  
  3869.                                                                    File_all
  3870.      ----------------------------------------------------------------------
  3871.      Saves and exits all files.
  3872.  
  3873.                                                                    Save_all
  3874.      ----------------------------------------------------------------------
  3875.      Saves all files.
  3876.  
  3877.                                                             Modify_save_all
  3878.      ----------------------------------------------------------------------
  3879.      Saves each modified file in the ring.
  3880.  
  3881.                                                                 Delete_file
  3882.      ----------------------------------------------------------------------
  3883.      Asks for a filename to delete on disk.
  3884.  
  3885.                                                                    Zap_file
  3886.      ----------------------------------------------------------------------
  3887.      Delete's the disk copy of the current file. 
  3888.  
  3889.  
  3890.  
  3891.  
  3892.                            Bingo 3.00 Reference Manual
  3893.                                        61
  3894.  
  3895.  
  3896.  
  3897.  
  3898.                                                                  Block_load
  3899.      ----------------------------------------------------------------------
  3900.      Loads a file from disk into the current position of the file.
  3901.  
  3902.                                                                  Clean_file
  3903.      ----------------------------------------------------------------------
  3904.      Resets the 'modified' status of the file to FALSE.
  3905.  
  3906.                                                                   Clean_all
  3907.      ----------------------------------------------------------------------
  3908.      Resets the 'modified' status of all files in the ring to FALSE.
  3909.  
  3910.                                                                 Backup_file
  3911.      ----------------------------------------------------------------------
  3912.      Forces a backup attempt for the current file; this will only have an
  3913.      effect if the file's timed backup setting is on.
  3914.  
  3915.                                                                  Backup_all
  3916.      ----------------------------------------------------------------------
  3917.      Forces a backup attempt on each file in the ring.  For each file, this
  3918.      will only have an effect if the file's timed backup setting is on.
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.                            Bingo 3.00 Reference Manual
  3951.                                        62
  3952.  
  3953.  
  3954.  
  3955.  
  3956.                                       Info
  3957.                                       ----
  3958.  
  3959.                                   Function List
  3960.      ----------------------------------------------------------------------
  3961.  
  3962.                                                                        Help
  3963.      ----------------------------------------------------------------------
  3964.      The 'help' function attempts to read the file BINGO.HLP located in the
  3965.      same directory as BE.EXE.  This file can consist of anything you wish,
  3966.      and contain up to 1000 lines as you wish (it must fit into memory...).
  3967.  
  3968.                                                                        Info
  3969.      ----------------------------------------------------------------------
  3970.      This function simply brings up some useful info, such as the size each
  3971.      file will be when written to disk, current date and time, etc.
  3972.  
  3973.                                                                 Ascii_table
  3974.      ----------------------------------------------------------------------
  3975.      This function serves a dual purpose.  First, it will pop up a display
  3976.      of all 256 characters, serving as a handy reminder of the characters
  3977.      available.  As you move the cursor over the table, the decimal, octal,
  3978.      hexadecimal, and mnemonic values, if appropriate.
  3979.           Further, by moving onto a particular character and hitting
  3980.      return, you will add this character to the string displayed at the
  3981.      top.  You can build a string up to about 30 characters in length.  The
  3982.      <Backspace> key will delete the last character on the string.  When
  3983.      you press <Escape> to leave, the contents of the string will be
  3984.      inserted into the text at the current cursor position.
  3985.  
  3986.                                                                Version_info
  3987.      ----------------------------------------------------------------------
  3988.      Displays various version information and the name of the person this
  3989.      copy was registered to, if it is a registered copy.
  3990.  
  3991.                                                                   Main_menu
  3992.      ----------------------------------------------------------------------
  3993.      Invokes the main menu.
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.                            Bingo 3.00 Reference Manual
  4009.                                        63
  4010.  
  4011.  
  4012.  
  4013.  
  4014.                                      Macros
  4015.                                      ------
  4016.  
  4017.           Bingo provides tremendous support for the creation, management,
  4018.      and execution of keyboard macros.  This level of support was initially
  4019.      dictated by my own experiences developing software, and later added to
  4020.      by user feedback.
  4021.           Bingo retains the status of the last function executed internally
  4022.      as a True or False value; you can see this reflected on the far right
  4023.      end of the active status line.  If, during the execution of a macro a
  4024.      function returns a False value, the macro will terminate.  Further, if
  4025.      applicable, the repeat command will terminate.  This allows you to
  4026.      execute macros "until function failure" based on things like trying to
  4027.      move beyond the beginning of the line.
  4028.           Also, you can terminate the execution of a macro by pressing the
  4029.      Scroll Lock key and holding it until the macro terminates.
  4030.  
  4031.      Macro Space
  4032.      -----------
  4033.           Bingo will dynamically increase its macro space to compensate
  4034.      when you add or release memory.  Thus, macro space is limited by
  4035.      available memory.
  4036.  
  4037.      Defining Macros
  4038.      ---------------
  4039.           There are four ways to define macros, all very similar.  You can
  4040.      define the scrap key to hold a macro, a single key to hold a macro,a
  4041.      two key combination to hold a macro, or a three key combination to
  4042.      hold a macro.  Any of these functions will also end a macro definition
  4043.      if one is currently in progress.   Macros can be defined across any
  4044.      number of activities.  Pressing <Escape> at any time as the response
  4045.      to a query from Bingo will end the macro presently being recorded.
  4046.  
  4047.      Ending Macro Definition
  4048.      -----------------------
  4049.           When you wish to end a macro definition, you can use any of the
  4050.      macro functions which would start a macro definition ('onekey_def',
  4051.      'twokey_def', 'threekey_def', 'define_scrap') as well as the
  4052.      'end_macro' function.  It is important to have at least one of these
  4053.      functions direclty assigned to a key; if you use them from the menu,
  4054.      you will record the keystrokes leading to them menu as well!
  4055.  
  4056.      Saving Macros
  4057.      -------------
  4058.           Using the single key save and load functions, you can save
  4059.      favorite macros to named files for later recall.  Single saving also
  4060.      saves the key sequence the macro is attached to, and loading it in
  4061.      again will redefine the key.
  4062.  
  4063.  
  4064.  
  4065.  
  4066.                            Bingo 3.00 Reference Manual
  4067.                                        64
  4068.  
  4069.  
  4070.  
  4071.  
  4072.      Saving the Entire Key Set
  4073.      -------------------------
  4074.           Bingo also allows you to save the entire key table, including all
  4075.      key assignments and all macros, for later recall.  Recalling a keyset
  4076.      file will overwrite the entire key table, so be warned.  
  4077.           When you save a keyset file, you can name the keyset file, and
  4078.      you can have it saved in Bingo's home directory or in an arbitrary
  4079.      directory.  If you name it Keycfg.set, it becomes the default file
  4080.      keyset, depending where you put it.  When Bingo starts up, it looks
  4081.      first in the current directory, then in its home directory for
  4082.      KEYCFG.SET.  This allows you to have multiple key configurations in
  4083.      different disk locations while still maintaining one executable.
  4084.  
  4085.      Executing a Macro File
  4086.      ----------------------
  4087.           You may also execute any macro which was single saved to a file
  4088.      at any time.  This executes it one, without disturbing the current key
  4089.      table assignments.  Good for macros used infrequently, but which are
  4090.      very useful.  I have a whole library of interesting ones saved at this
  4091.      point.
  4092.  
  4093.                                   Function List
  4094.      ----------------------------------------------------------------------
  4095.  
  4096.                                                                Define_scrap
  4097.      ----------------------------------------------------------------------
  4098.      Start scrap macro definition.  
  4099.  
  4100.                                                                  Onekey_def
  4101.      ----------------------------------------------------------------------
  4102.      Start single-key macro definition.
  4103.  
  4104.                                                                  Twokey_def
  4105.      ----------------------------------------------------------------------
  4106.      Start two-key macro definition.
  4107.  
  4108.                                                                Threekey_def
  4109.      ----------------------------------------------------------------------
  4110.      Start a three-key macro definition.
  4111.  
  4112.                                                                       Scrap
  4113.      ----------------------------------------------------------------------
  4114.      Execute the scrap macro.
  4115.  
  4116.                                                             Single_key_save
  4117.      ----------------------------------------------------------------------
  4118.      Save a single macro to a file for later recall.  Saves the key it is
  4119.      attached to also.
  4120.  
  4121.  
  4122.  
  4123.  
  4124.                            Bingo 3.00 Reference Manual
  4125.                                        65
  4126.  
  4127.  
  4128.  
  4129.  
  4130.                                                             Single_key_load
  4131.      ----------------------------------------------------------------------
  4132.      Load a single macro from a file.  Overwrites the current definition
  4133.      for the key, if it has one.
  4134.  
  4135.                                                                Key_set_save
  4136.      ----------------------------------------------------------------------
  4137.      Saves entire keyset, including macros, but not the scrap.
  4138.  
  4139.                                                                Key_set_load
  4140.      ----------------------------------------------------------------------
  4141.      Load entire keyset.
  4142.  
  4143.                                                              Run_macro_file
  4144.      ----------------------------------------------------------------------
  4145.      Runs a macro from a file saved with single_key_save.
  4146.  
  4147.                                                                Undefine_key
  4148.      ----------------------------------------------------------------------
  4149.      Undefines a key.
  4150.  
  4151.                                                                   End_macro
  4152.      ----------------------------------------------------------------------
  4153.      Ends the recording of a current macro.  Mostly useless, but it made
  4154.      for a useful menu entry.
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.                            Bingo 3.00 Reference Manual
  4183.                                        66
  4184.  
  4185.  
  4186.  
  4187.  
  4188.                                    Navigation
  4189.                                    ----------
  4190.  
  4191.           Navigation in Bingo is very straightforward.  You may move in
  4192.      terms of characters, lines, words, windowfuls, and the entire file. 
  4193.      You can also jump to the beginning and end of a marked block. 
  4194.      Finally, you can jump to a specified line, or by a relative number of
  4195.      lines, or to a column, or by a relative number of columns, or by both
  4196.      lines and columns in the file using the Jump function.
  4197.           In addition, Bingo supports placemarks.  I had never really used
  4198.      placemarks much, or "bookmarks" as they are sometimes called.  But a
  4199.      buddy of mine told me to try them when in big files, and I was
  4200.      impressed.  But the editor I tried them in allowed only one; this is
  4201.      just not enough.  So I went one better.  Actually, I went 9 better.
  4202.           Bingo provides 10 placemarks.  You can drop one, jump to one, or
  4203.      pop up a list of the current placemarks.  Each placemark defines a
  4204.      file, a line, and a column.  When you try to jump to a placemark and
  4205.      the file it pertains to is not in the ring, the file will be fetched.
  4206.  
  4207.                                   Function List
  4208.      ----------------------------------------------------------------------
  4209.  
  4210.                                                                   Down_page
  4211.      ----------------------------------------------------------------------
  4212.      Moves down one windowful.
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.                            Bingo 3.00 Reference Manual
  4241.                                        67
  4242.  
  4243.  
  4244.  
  4245.  
  4246.                                                                     Up_page
  4247.      ----------------------------------------------------------------------
  4248.      Moves up one windowful.
  4249.  
  4250.                                                                Cursor_right
  4251.      ----------------------------------------------------------------------
  4252.      Moves right one char; wraps if necessary and if bounce mode is active.
  4253.  
  4254.                                                                 Cursor_left
  4255.      ----------------------------------------------------------------------
  4256.      Moves left one char, wraps if necessary and if bounce mode is active.
  4257.  
  4258.                                                                   Cursor_up
  4259.      ----------------------------------------------------------------------
  4260.      Moves up one line.
  4261.  
  4262.                                                                 Cursor_down
  4263.      ----------------------------------------------------------------------
  4264.      Moves down one line.
  4265.  
  4266.                                                                    Back_tab
  4267.      ----------------------------------------------------------------------
  4268.      Moves back to the previous tab stop.  Does not change the text at all.
  4269.  
  4270.                                                                  Begin_line
  4271.      ----------------------------------------------------------------------
  4272.      Goes to beginning of line.
  4273.  
  4274.                                                                    End_line
  4275.      ----------------------------------------------------------------------
  4276.      Goes to end of line.
  4277.  
  4278.                                                                 Top_of_file
  4279.      ----------------------------------------------------------------------
  4280.      Jump to top of file.
  4281.  
  4282.                                                                 Bot_of_file
  4283.      ----------------------------------------------------------------------
  4284.      Jump to bottom of file.
  4285.  
  4286.                                                                   Next_word
  4287.      ----------------------------------------------------------------------
  4288.      Goes to beginning of next word.
  4289.  
  4290.                                                                   Prev_word
  4291.      ----------------------------------------------------------------------
  4292.      Goes to beginning of previous word.
  4293.  
  4294.                                                               Top_of_screen
  4295.      ----------------------------------------------------------------------
  4296.      Jumps to the top of screen.
  4297.  
  4298.                            Bingo 3.00 Reference Manual
  4299.                                        68
  4300.  
  4301.  
  4302.  
  4303.  
  4304.                                                            Bottom_of_screen
  4305.      ----------------------------------------------------------------------
  4306.      Jumps to the bottom of screen.
  4307.  
  4308.                                                                Top_of_block
  4309.      ----------------------------------------------------------------------
  4310.      Jumps to the top of marked block.
  4311.  
  4312.                                                             Bottom_of_block
  4313.      ----------------------------------------------------------------------
  4314.      Jumps to the bottom of marked block.
  4315.  
  4316.                                                                        Jump
  4317.      ----------------------------------------------------------------------
  4318.      Jump to position, column, line or both.  The format is:
  4319.           [(+/-)row][,(+/-)column]
  4320.      If the number is prefaced with a '+' character, Bingo will jump the
  4321.      relative distance forward.  If the number is prefaced with a '-'
  4322.      character, Bingo will jump the relative distance backwards.  Otherwise
  4323.      the number will be interpreted as an absolute.  Either number, or
  4324.      neither, may be ommitted.
  4325.  
  4326.                                                                 Center_line
  4327.      ----------------------------------------------------------------------
  4328.      Makes the current line the center line of the current window, and
  4329.      repaint the entire screen, all windows.  
  4330.                                                               Begin_of_text
  4331.      ----------------------------------------------------------------------
  4332.      Moves the cursor to the first non-space character on the current line.
  4333.  
  4334.                                                                   Indent_up
  4335.      ----------------------------------------------------------------------
  4336.      Moves to previous line with same indentation scheme as current line.
  4337.  
  4338.                                                                 Indent_down
  4339.      ----------------------------------------------------------------------
  4340.      Moves to next line with same indentation scheme as current line.
  4341.  
  4342.                                                            Snap_to_mouse_xy
  4343.      ----------------------------------------------------------------------
  4344.      Moves the cursor to the current mouse position, changing windows if
  4345.      necessary.
  4346.  
  4347.                                                                Mouse_scroll
  4348.      ----------------------------------------------------------------------
  4349.      Moves the cursor to the mouse position when the mouse button is
  4350.      released;  while the button is depressed, the file will scroll up and
  4351.      down, depending on where the mouse cursor is moved.  The closer the
  4352.      cursor is to the top and bottom of the window, the faster the file
  4353.      will scroll.
  4354.  
  4355.  
  4356.                            Bingo 3.00 Reference Manual
  4357.                                        69
  4358.  
  4359.  
  4360.  
  4361.  
  4362.                                                                  Place_mark
  4363.      ----------------------------------------------------------------------
  4364.      Drops a placemark, inquiring as which of the 10 allowed (0-9) you are
  4365.      concerned with.  Each placemark contains the filename, the line, the
  4366.      column.
  4367.  
  4368.                                                                   Jump_mark
  4369.      ----------------------------------------------------------------------
  4370.      Jumps to the specified placemark.  If the specified filename is not in
  4371.      the ring, Bingo will go and get it.
  4372.  
  4373.                                                                  Show_marks
  4374.      ----------------------------------------------------------------------
  4375.      Pops up a window showing the current placemarks in effect for this
  4376.      editing session.
  4377.  
  4378.                                                                   Scroll_up
  4379.      ----------------------------------------------------------------------
  4380.      Scroll the display up one line, keeping the cursor in its same place.
  4381.  
  4382.                                                                 Scroll_down
  4383.      ----------------------------------------------------------------------
  4384.      Scroll the display down one line, keeping the cursor in its same
  4385.      place.
  4386.  
  4387.                                                                 Scroll_left
  4388.      ----------------------------------------------------------------------
  4389.      Scrolls the screen to left (the text to the right). 
  4390.  
  4391.                                                                Scroll_right
  4392.      ----------------------------------------------------------------------
  4393.      Scrolls the screen to right (the txt to the left).
  4394.  
  4395.  
  4396.  
  4397.  
  4398.  
  4399.  
  4400.  
  4401.  
  4402.  
  4403.  
  4404.  
  4405.  
  4406.  
  4407.  
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.                            Bingo 3.00 Reference Manual
  4415.                                        70
  4416.  
  4417.  
  4418.  
  4419.  
  4420.                                 System Operations
  4421.                                 -----------------
  4422.  
  4423.           Bingo supports a number of system operations.  While they are not
  4424.      large in number, they are large in utility.
  4425.  
  4426.      Simple Execution & Shelling
  4427.      ---------------------------
  4428.           The 'exec_command' function simply executes a given DOS command
  4429.      line and returns.  It does not do anything fancy, and Bingo will
  4430.      remain in memory (consuming quite a bit of memory) but it is fast and
  4431.      simple for issuing short commands.
  4432.           The 'shell' function is identical to 'exec_command', except it
  4433.      takes no arguments.  It simply gives you a DOS shell.
  4434.  
  4435.      Swap Execution & Shelling
  4436.      -------------------------
  4437.           More often than not, particularly in the case of executing
  4438.      command-line compilers, you simply can't afford to let Bingo hang
  4439.      around in memory, since it consumes a bit.  So Bingo provides two
  4440.      other methods for executing commands.  While they appear identical in
  4441.      form and function to the previous pair of functions, 'swap_execute' &
  4442.      'swap_shell', are much more interesting.  
  4443.           While they, too, execute a command or shell to DOS, prior to
  4444.      doing so, they save all relevant information such as copies of the
  4445.      current files, etc., then swap Bingo out of memory.  When this
  4446.      happens, a ~3k kernel is left behind to manage things until the
  4447.      command is finished; then it will reload Bingo.  Notice that the
  4448.      method of Bingo swapping out is now much different with version 3.00;
  4449.      thanks to Ralf Brown's excellent swapping routines.
  4450.  
  4451.                                   Function List
  4452.      ----------------------------------------------------------------------
  4453.  
  4454.                                                                       Chdir
  4455.      ----------------------------------------------------------------------
  4456.      Change the currently logged directory.
  4457.  
  4458.                                                                Exec_command
  4459.      ----------------------------------------------------------------------
  4460.      Execute a DOS command, while leaving Bingo completely resident in
  4461.      memory.
  4462.  
  4463.                                                                       Shell
  4464.      ----------------------------------------------------------------------
  4465.      Shell to DOS, leaving Bingo completely resident in memory.
  4466.  
  4467.                                                                Swap_execute
  4468.      ----------------------------------------------------------------------
  4469.      Execute a DOS command while swapping Bingo out, leaving behind an ~3k
  4470.      kernel.
  4471.  
  4472.                            Bingo 3.00 Reference Manual
  4473.                                        71
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.                                                                  Swap_shell
  4480.      ----------------------------------------------------------------------
  4481.      Shell to DOS while swapping as above.
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.                            Bingo 3.00 Reference Manual
  4531.                                        72
  4532.  
  4533.  
  4534.  
  4535.  
  4536.                                     Printing
  4537.                                     --------
  4538.  
  4539.           Prior to version 2.01, there were two functions to print, one for
  4540.      the file and one for a marked block.  As of version 2.01, these have
  4541.      been combined into 'print_file', which prints a block if it is marked,
  4542.      otherwise it prints the file.
  4543.           There are a number of options governing printing.  You can ask
  4544.      for line numbers to be printed, page headers (time, page, filename),
  4545.      and decide whether Bingo should terminate a line with a single
  4546.      linefeed, or with linefeed/carraige return pairs.
  4547.           You can also send standalone linefeed or formfeed character, or
  4548.      send a sequence of ASCII values.
  4549.  
  4550.                                   Function List
  4551.      ----------------------------------------------------------------------
  4552.  
  4553.                                                                  Print_file
  4554.      ----------------------------------------------------------------------
  4555.      Print the current file, or a marked block if there is one, using the
  4556.      current printer settings, to the current destination.  Whenever Bingo
  4557.      encounters a formfeed character, it will assume that is the start of a
  4558.      new page, and start the remainder of the line at the left margin.
  4559.  
  4560.                                                                     Send_lf
  4561.      ----------------------------------------------------------------------
  4562.      Send a line feed character to the destination.
  4563.  
  4564.                                                                     Send_ff
  4565.      ----------------------------------------------------------------------
  4566.      Send a formfeed character to the destination
  4567.  
  4568.                                                               Send_sequence
  4569.      ----------------------------------------------------------------------
  4570.      Send a sequence of character values to the printer; e.g.
  4571.                          12,12,12,12,12
  4572.           sends a series of 5 ASCII 12's (decimal) to the destination
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.                            Bingo 3.00 Reference Manual
  4589.                                        73
  4590.  
  4591.  
  4592.  
  4593.  
  4594.                                     Searching
  4595.                                     ---------
  4596.  
  4597.           There are two search algorithms present in Bingo.  One is very
  4598.      simple and very fast, and part of it is hand-coded in assembler for a
  4599.      bit more speed yet.  For 95% of what you want to do, it is just right.
  4600.           However, with the advent of version 2.01, a second search
  4601.      algorithm was added; a regular-expression method.  Regular expressions
  4602.      are a mathematical way to describe strings of text, and are very
  4603.      powerful.  Bingo's algorithm is reliable but not overly speedy; I
  4604.      suggest you keep this in mind when using it.
  4605.           If you are not familiar with regular expressions, I am not going
  4606.      to attempt to explain them to you here.  If, however, you have used
  4607.      them before, I will explain the notations I used in coding Bingo's
  4608.      algorithm.
  4609.           To perform a regexp search, use the 'R' modifier on you search
  4610.      (or replace).  If you use this modifier, the string will be
  4611.      interpreted as follows:
  4612.  
  4613.           -    classes, i.e. [0-9] and 'not' classes, i.e [~0-9]
  4614.           -    occurrences of once, once or none (?), one or more (+), none
  4615.                or more (*)
  4616.           -    grouping  {}
  4617.           -    ORing of {} groups |
  4618.           -    wildcard character .
  4619.           -    match begin and end of lines with ^ and $, respectively
  4620.           -    support for debugging regular expression search 
  4621.                patterns
  4622.           -    along with regular expression searches, you can specify the
  4623.                replacement in terms of the matched text.  '@n' in the
  4624.                replacement pattern places the text matching the nth group.
  4625.                '@@' matches the entire matched text. This allows you to do
  4626.                some nifty text manipulation.
  4627.  
  4628.           For some simple examples, see below.
  4629.  
  4630.           It is easy to limit the search area to a specific range by
  4631.      marking a rangeof text in any of Bingo's three modes.  Then use the
  4632.      'M' modifier to say you wish to match text only within the Marked
  4633.      area.
  4634.           The 'C' option in the 'search' function will count the number of
  4635.      occurrences of the target string in the rest of the search area.
  4636.           The 'G'lobal option for search and replace operations starts from
  4637.      the current cursor position, not from the top of the file.
  4638.           Try the Search & Macro capability -- it is sharp.
  4639.  
  4640.  
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646.                            Bingo 3.00 Reference Manual
  4647.                                        74
  4648.  
  4649.  
  4650.  
  4651.  
  4652.      Regular Expression Search & Replace Examples
  4653.      --------------------------------------------
  4654.           Here are some examples of regular example search and replace.
  4655.  
  4656.      Search for --> [a-z]+/.
  4657.           would match any sequence of one or more letters between 'a' and
  4658.           'z' followed by a single period.
  4659.  
  4660.      Search for --> help[a-z]+/.
  4661.           would match a sequence of 'help' followed by one or more letters
  4662.           then a single period.  It would match 'helpoooooo.' and 'helpp.'
  4663.           but not 'help.'
  4664.  
  4665.      Search for --> 19{87}|{88}
  4666.           would match '19' followed by one occurance of either '87' or
  4667.           '88'.
  4668.  
  4669.      Search for --> 19{87}*|{88}
  4670.           would match '19' followed by none or more occurances of '87' or a
  4671.           single occurance of '88'.  Thus it would match '19',
  4672.           '1987878787', or '1988'.
  4673.  
  4674.      Search for --> .
  4675.           matches any single character. (Note: /. would match a an actual
  4676.           period.)
  4677.  
  4678.      Search for --> ^[a-z]+
  4679.           matches a sequence of 1 or more letters, provided it starts a
  4680.           line.
  4681.  
  4682.      Search for --> ^[a-z]+$
  4683.           matches a sequence of 1 or more letters, provided it starts a
  4684.           line and ends a line.
  4685.  
  4686.      Search for --> ^[a-z]+/.[a-z]+
  4687.           basically matches filenames made up of alpha characters, which
  4688.           are found at the beginning of a line.
  4689.  
  4690.      Search for --> ^$
  4691.           matches a blank line.
  4692.                     
  4693.      Search for --> ^.
  4694.           matches a non-blank line.
  4695.  
  4696.      These last two allow you to do some neat stuff using
  4697.      the macro capability, i.e., apply a macro to every
  4698.      non-blank line.
  4699.  
  4700.  
  4701.  
  4702.  
  4703.  
  4704.                            Bingo 3.00 Reference Manual
  4705.                                        75
  4706.  
  4707.  
  4708.  
  4709.  
  4710.      Search for --> {[a-z]+}{/.}{[a-z]+}
  4711.      Replace with -->  @3.@1
  4712.           This will match a sequence of one or more letters, followed by a
  4713.           period, followed by one or more letters (a filename,
  4714.           essentially).  The replace will put the text matching the 3rd
  4715.           group first, then a period, then the text matching the 1st group. 
  4716.           On a filename, this will have the effect of reversing the order
  4717.           of the name and the extension, i.e:
  4718.  
  4719.                filename.txt
  4720.  
  4721.           would become
  4722.  
  4723.                txt.filename
  4724.  
  4725.           since 'filename' would match the first group and 'txt' matches
  4726.           the third group.  
  4727.  
  4728.                                   Function List
  4729.      ----------------------------------------------------------------------
  4730.  
  4731.                                                                       Again
  4732.      ----------------------------------------------------------------------
  4733.      Repeat the last search operation.  If none has yet been done, works
  4734.      just like search.  If the last search operation done was a search &
  4735.      replace, only the search portion is done.
  4736.  
  4737.                                                                      Search
  4738.      ----------------------------------------------------------------------
  4739.      Search for text.  Will ask for the target text, and two modifiers:
  4740.                               A Accent
  4741.                               B Backwards
  4742.                               C Count
  4743.                               D Debug
  4744.                               I Ignore case
  4745.                               M Marked
  4746.                               R Regexp
  4747.  
  4748.           The 'A' option tells Bingo to highlight the 'found' text until
  4749.      the next keystroke arrives.
  4750.           The 'B' modifier will search backwards.
  4751.           The 'C' option simply counts the number of occurrences.
  4752.           The 'D' option tells Bingo that, if you also specify regular
  4753.      expression searching, before searching display Bingo's interpretation
  4754.      of your regular expression.
  4755.           The 'I' option tells Bingo to ignore case when searching.
  4756.           The 'M' option tells Bingo to only matched text *completely*
  4757.      within marked text.
  4758.           The 'R' option tells Bingo to interpret the input string as a
  4759.      regular expression.  See the section on searching for more details.
  4760.  
  4761.  
  4762.                            Bingo 3.00 Reference Manual
  4763.                                        76
  4764.  
  4765.  
  4766.  
  4767.  
  4768.                                                                     Replace
  4769.      ----------------------------------------------------------------------
  4770.      Search and replace text.  Will ask for target, replacement text, and
  4771.      three modifiers:
  4772.                               B Backwards
  4773.                               D Debug
  4774.                               G Global Search/Replace
  4775.                               I Ignore Case
  4776.                               M Marked
  4777.                               P Preserve
  4778.                               R Regexp
  4779.           If Global is selected, Bingo will simply replace all matching
  4780.      occurrences with the replacement text.  If not, Bingo will stop at
  4781.      each match and ask:
  4782.                          Yes:      replace and continue.
  4783.                          No:       don't replace, but continue search.
  4784.                          Only:     Replace this and stop
  4785.                          Quit:     stop, no replacement.
  4786.                          Global:   Continue with global replacement
  4787.  
  4788.           'M' & 'R' & 'A' options work as in the search case.
  4789.           'P' tells Bingo to preserve the original cursor location and
  4790.      return to it when done with the replace operation.
  4791.           'D' is useful for regular expression work.  It tells Bingo to
  4792.      display its conception of the target string (grouping, classes,
  4793.      occurance, etc).
  4794.  
  4795.                                                                Search_macro
  4796.      ----------------------------------------------------------------------
  4797.      Will acted like the 'search' function, but will ask for a key to apply
  4798.      when found.  It will work like the replace function, but instead of
  4799.      replacing, it will execute the given key.  DO NOT use this function
  4800.      while recording a macro.
  4801.  
  4802.                                                             Mark_last_found
  4803.      ----------------------------------------------------------------------
  4804.      His will unmark the file and mark the last found text if you have not
  4805.      moved.
  4806.  
  4807.                                                                Leap_forward
  4808.      ----------------------------------------------------------------------
  4809.      Searches forward for the next occurence of the next key pressed.  If
  4810.      the key is a function key or return, 'leap_forward' will use the
  4811.      previous target.
  4812.  
  4813.                                                               Leap_backward
  4814.      ----------------------------------------------------------------------
  4815.      Searches backward for the next occurence of the next key pressed.  If
  4816.      the key is a function key or return, 'leap_backward' will use the
  4817.      previous target.
  4818.  
  4819.  
  4820.                            Bingo 3.00 Reference Manual
  4821.                                        77
  4822.  
  4823.  
  4824.  
  4825.  
  4826.                                     Utilities
  4827.                                     ---------
  4828.  
  4829.           Bingo provides large number of utilities to be used to manipulate
  4830.      text.  Some of the functions available can:
  4831.  
  4832.           -    change the case of a block
  4833.           -    strip the high bit from characters in a block
  4834.           -    place tabs within text, and expand tabs within text
  4835.           -    shift blocks a certain number of spaces
  4836.           -    align lines with other lines
  4837.           -    sort blocks, in ascending or descending order, on a
  4838.                particular column
  4839.           -    fill a vertically-marked block with a specific character 
  4840.           -    format a paragraph
  4841.           -    count the number of words over a span of lines
  4842.           -    insert the current time and date into the file
  4843.           -    center text
  4844.  
  4845.           The big thing with the utilities is: play with them.  They allow
  4846.      you to do some really useful things to your text,particularly when you
  4847.      are reformatting.  Particularly, entab/detab/indent_tab are very
  4848.      useful when importing files from other systems/editors.  You can take
  4849.      a file with hard tabs in it which assumed a tabsize of 8 characters,
  4850.      detab it, change the tabsize to 3, entab it, and save it ready for
  4851.      another editor which demands hard tabs with a tabsize of 3.
  4852.  
  4853.                                   Function List
  4854.      ----------------------------------------------------------------------
  4855.  
  4856.                                                                       Entab
  4857.      ----------------------------------------------------------------------
  4858.      Compresses the linemarked region specified or the entire file by
  4859.      converting spaces to tabs.
  4860.  
  4861.                                                                  Indent_tab
  4862.      ----------------------------------------------------------------------
  4863.      Compresses the leading spaces of the linemark region specified or the
  4864.      entire file by converting into the proper tabs.  Rounds to the nearest
  4865.      tab stop, thus "normalizing" the indention to tab stops.
  4866.  
  4867.                                                                       Detab
  4868.      ----------------------------------------------------------------------
  4869.      Expands the linemarked region specified or the entire file by
  4870.      converting tabs to spaces.
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878.                            Bingo 3.00 Reference Manual
  4879.                                        78
  4880.  
  4881.  
  4882.  
  4883.  
  4884.                                                                 Shift_block
  4885.      ----------------------------------------------------------------------
  4886.      Shifts the specified linemarked region the number of columns
  4887.      specified.  Positive numbers indicate right-shifting, negative
  4888.      numbers, left-shifting.  The character 't' is used to signify tab
  4889.      widths '-3t' shifts the block left 3 tabwidths.
  4890.  
  4891.  
  4892.                                                                 Lcase_block
  4893.      ----------------------------------------------------------------------
  4894.      Lowercases the marked region.
  4895.  
  4896.                                                                 Ucase_block
  4897.      ----------------------------------------------------------------------
  4898.      Uppercases the marked region.
  4899.  
  4900.                                                                 Fcase_block
  4901.      ----------------------------------------------------------------------
  4902.      Flips the case of the marked region.
  4903.  
  4904.                                                                  Word_count
  4905.      ----------------------------------------------------------------------
  4906.      Counts the words in the linemarked region, default the whole file.  A
  4907.      word here is defined as non-whitespace and non-punctuation characters,
  4908.      NOT by the settings of the 'conf_word' function.
  4909.  
  4910.                                                               Strip_highbit
  4911.      ----------------------------------------------------------------------
  4912.      Strips the 8th bit in the linemarked region, default the whole file.
  4913.  
  4914.                                                                  Sort_block
  4915.      ----------------------------------------------------------------------
  4916.      Sorts block, ascending or descending, on a given column.
  4917.  
  4918.                                                                 Reform_para
  4919.      ----------------------------------------------------------------------
  4920.      Reformats a block of text to conform to the right margin; a paragraph
  4921.      is defined as text between blank lines.  The total amount of text
  4922.      contained in a single paragraph cannot be larger than 30000
  4923.      characters.
  4924.  
  4925.                                                                      Repeat
  4926.      ----------------------------------------------------------------------
  4927.      Repeats a keystroke n times.  If n is '*', the function repeats until
  4928.      a search fails.  The function halts repetition on a search failure. 
  4929.      DO NOT use this command while you are recording a macro; you will get
  4930.      unpredictable results when you replay the macro.
  4931.  
  4932.                                                                    Dup_line
  4933.      ----------------------------------------------------------------------
  4934.      Duplicates the current line and increments cursor to the next line.
  4935.  
  4936.                            Bingo 3.00 Reference Manual
  4937.                                        79
  4938.  
  4939.  
  4940.  
  4941.  
  4942.                                                                       Align
  4943.      ----------------------------------------------------------------------
  4944.      Slides the linemarked region left or right to match indentation with
  4945.      the line immediately above the first marked line.  If no lines are
  4946.      marked, the current line is aligned.
  4947.                                                                 Match_delim
  4948.      ----------------------------------------------------------------------
  4949.      Finds the proper match for a delimiter.  Delimiters are configurable
  4950.      by the 'conf_delims' functions.
  4951.  
  4952.                                                                  Time_stamp
  4953.      ----------------------------------------------------------------------
  4954.      Inserts the current date and time into the text.
  4955.  
  4956.                                                                  Fill_block
  4957.      ----------------------------------------------------------------------
  4958.      Fills a vertically marked block with a specified character.
  4959.  
  4960.                                                                 Center_text
  4961.      ----------------------------------------------------------------------
  4962.      Centers the current non-space text of the current line (or linemarked
  4963.      block) on its line, relative to the right margin.
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.  
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985.  
  4986.  
  4987.  
  4988.  
  4989.  
  4990.  
  4991.  
  4992.  
  4993.  
  4994.                            Bingo 3.00 Reference Manual
  4995.                                        80
  4996.  
  4997.  
  4998.  
  4999.  
  5000.                                      Windows
  5001.                                      -------
  5002.  
  5003.      Window_vertical
  5004.      ---------------
  5005.           Bingo provides the ability to split windows vertically.  There
  5006.      are some restrictions, however.  Vertical windows must always exist in
  5007.      pairs; that is, two windows sharing one status line.  They are even
  5008.      resized together.  This is not a large problem, but you should be
  5009.      aware of it.
  5010.  
  5011.      Window_one & Window_zoom
  5012.      ------------------------
  5013.           While window_one and window_zoom superficially perform the same
  5014.      action, remember that zoom is simply a toggle, while the 'window_one'
  5015.      function eliminates all windows except the current, growing the
  5016.      current window to full size.
  5017.  
  5018.                                   Function List
  5019.      ----------------------------------------------------------------------
  5020.  
  5021.                                                                 Window_edit
  5022.      ----------------------------------------------------------------------
  5023.      This function ask for a filename, then splits the window and
  5024.      essentially performs and edit_file function for the requested
  5025.      filename.
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042.  
  5043.  
  5044.  
  5045.  
  5046.  
  5047.  
  5048.  
  5049.  
  5050.  
  5051.  
  5052.                            Bingo 3.00 Reference Manual
  5053.                                        81
  5054.  
  5055.  
  5056.  
  5057.  
  5058.                                                                 Window_load
  5059.      ----------------------------------------------------------------------
  5060.      Works like window_edit, except it forces a reload of the named file.
  5061.  
  5062.                                                                Window_split
  5063.      ----------------------------------------------------------------------
  5064.      This simply splits the current window in two and uses the current file
  5065.      for both.
  5066.  
  5067.                                                             Window_vertical
  5068.      ----------------------------------------------------------------------
  5069.      Splits the current window vertically.  Windows can only be split so
  5070.      once.
  5071.  
  5072.                                                                Window_close
  5073.      ----------------------------------------------------------------------
  5074.      Closes the current window and expands the above window to use its
  5075.      space.
  5076.  
  5077.                                                                 Window_zoom
  5078.      ----------------------------------------------------------------------
  5079.      Toggles the display between zoomed mode.  When the display is zoomed,
  5080.      the current window takes up the entire display, but Bingo 'remembers'
  5081.      the rest of the windows and will restore them when zoom mode is
  5082.      toggled again.
  5083.  
  5084.                                                                  Window_one
  5085.      ----------------------------------------------------------------------
  5086.      This function makes the current window the only window, wiping out all
  5087.      other windows.
  5088.  
  5089.                                                                 Window_next
  5090.      ----------------------------------------------------------------------
  5091.      This moves to the next window down, or wraps to the top window if
  5092.      necessary.
  5093.  
  5094.                                                             Window_previous
  5095.      ----------------------------------------------------------------------
  5096.      This moves to the next window up, or wraps to the bottom if necessary.
  5097.  
  5098.                                                                  Window_top
  5099.      ----------------------------------------------------------------------
  5100.      Jumps to the topmost, leftmost window.
  5101.  
  5102.                                                               Window_bottom
  5103.      ----------------------------------------------------------------------
  5104.      Jumps to the bottom-most, rightmost window.
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.                            Bingo 3.00 Reference Manual
  5111.                                        82
  5112.  
  5113.  
  5114.  
  5115.  
  5116.                                                               Window_resize
  5117.      ----------------------------------------------------------------------
  5118.      This allows you to resize the current window (and its left or right
  5119.      sibling, if it exists) and the window below (and *its* left or right
  5120.      sibling, if it exists) by 'rubberbanding' the current status line up
  5121.      and down.
  5122.  
  5123.  
  5124.  
  5125.  
  5126.  
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.  
  5156.  
  5157.  
  5158.  
  5159.  
  5160.  
  5161.  
  5162.  
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.                            Bingo 3.00 Reference Manual
  5169.                                        83
  5170.  
  5171.  
  5172.  
  5173.  
  5174.                                  Extra Functions
  5175.                                  ---------------
  5176.  
  5177.      Pick & Exec
  5178.      -----------
  5179.           This function asks for a function descriptor to execute.  The
  5180.      same function descriptors are used as are used by KEYCFG.  If you give
  5181.      it an unrecognized descriptor, a list of all supported functions are
  5182.      popped up for your convenience.  If you give it substring, such as
  5183.      'win', all functions descriptors which contain 'win' anywhere will be
  5184.      shown; in this case the window functions.  Tie this to an easy-to-
  5185.      remember key and all of Bingo's functions are at your fingertips.  
  5186.           This is also useful when you are trying to remember a particular
  5187.      function descriptor and you don't have the documentation handy.
  5188.  
  5189.      Quit and Save Status
  5190.      --------------------
  5191.           This simply saves the current Bingo status information, copies of
  5192.      all current files, and exits.  When you next start Bingo, it will ask
  5193.      if you wish to restore Bingo to its previous state.  If you say yes,
  5194.      you will be placed exactly where you left off.  If you indicate no,
  5195.      Bingo will proceed normally, leaving the suspension files in place to
  5196.      be dealt with the next time Bingo is invoked.
  5197.           This function is ultra-useful since it allows for easy
  5198.      interruptions when you are working.
  5199.  
  5200.      Repeat_last
  5201.      -----------
  5202.           This is a handy function.  It will execute the most-recently-
  5203.      executed function again.  It won't change what that most-recently-
  5204.      executed function was.
  5205.  
  5206.      Box Draw Mode
  5207.      -------------
  5208.           This is an enormously useful capability.  When the
  5209.      'toggle_box_draw' function is executed, you will be asked whether you
  5210.      wish to use single or double line drawing.  After you make your
  5211.      choice, the 4 cursor movement functions will respond differently. 
  5212.      When you move the cursor up via the 'cursor_up' function, the cursor
  5213.      will move up, but it will trail a line (of the appropriate mode)
  5214.      behind.  Corners and intersections will be handled automatically.  The
  5215.      line characters will be placed into the text as if Bingo was in
  5216.      overwrite mode. 
  5217.           As of version 3.00, double and single lines will intermix nicely
  5218.      with no problems.  Also, an 'erase' mode has been added to allow you
  5219.      to move about using the arrow keys erasing text.
  5220.  
  5221.  
  5222.  
  5223.  
  5224.  
  5225.  
  5226.                            Bingo 3.00 Reference Manual
  5227.                                        84
  5228.  
  5229.  
  5230.  
  5231.  
  5232.      Cmd_line
  5233.      --------
  5234.           This function gives you a command line entry space on the status
  5235.      line.  You may enter any valid Bingo function.  You only need to enter
  5236.      enough of the function to make it unique; for example, 'swap_ex' is
  5237.      enough to get you the swap_execute function.
  5238.           Further, you can pass parameters to the function you enter
  5239.      directly on the command line, provided the parameters would normally
  5240.      be entered into a string-entry box.  For example,
  5241.  
  5242.           swap_exec dir/p
  5243.  
  5244.      entered in response to the cmd_line would directly execute the "dir/p"
  5245.      command after swapping Bingo out.
  5246.           Note that this only works for parameters which would normally be
  5247.      entered in a string-entry box; parameters entered in response to a
  5248.      Yes/No box would not work.
  5249.  
  5250.                                   Function List
  5251.      ----------------------------------------------------------------------
  5252.  
  5253.                                                                   Pick_exec
  5254.      ----------------------------------------------------------------------
  5255.      This allows you to pick a function descriptor and have it executed.
  5256.  
  5257.                                                        Quit_and_save_status
  5258.      ----------------------------------------------------------------------
  5259.      His function saves the current status of Bingo as well as the current
  5260.      files, so that the next time Bingo is invoked, you will be given the
  5261.      option to pick up where you left off.
  5262.  
  5263.                                                                      Global
  5264.      ----------------------------------------------------------------------
  5265.      This allows you to execute any keystroke globally, throughout all the
  5266.      files in the ring.  DO NOT use this function while recording a macro. 
  5267.      When invoked, it asks for a keystroke to execute globally.  The
  5268.      keystroke can invoke a macro, or simple be tied to a function.  For
  5269.      each file in the ring, Bingo will ask if you wish the function to be
  5270.      executed; your options are the same as they are when doing a search &
  5271.      replace operation: 
  5272.           Y         Yes, do operation, go to next file
  5273.           N         No, don't do operation, but do go to next file
  5274.           O         Yes, do the operation, but abort the global operation
  5275.                     afterwards.
  5276.           G         Yes, do the operation, and do it for all remaining
  5277.                     files without asking.
  5278.           Q         Abort the global operation right now.
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.                            Bingo 3.00 Reference Manual
  5285.                                        85
  5286.  
  5287.  
  5288.  
  5289.  
  5290.                                                                 Query_quote
  5291.      ----------------------------------------------------------------------
  5292.      Inserts an integer or sequence of integers as its raw ASCII character. 
  5293.      The decimal values must be comma delimited.  This function does NOT
  5294.      change the cursor position.
  5295.  
  5296.                                                              Toggle_display
  5297.      ----------------------------------------------------------------------
  5298.      Toggles the display size between 25 lines and 43/50 lines.  Will in
  5299.      all likelihood screw up the cursor shape, since the scan line counts
  5300.      will change.
  5301.  
  5302.                                                                Load_profile
  5303.      ----------------------------------------------------------------------
  5304.      Loads the profile file of your choice, searching first the current
  5305.      directory then Bingo's home directory. 
  5306.  
  5307.                                                               Write_profile
  5308.      ----------------------------------------------------------------------
  5309.      Saves the text settings of the active buffer to the profile file of
  5310.      your choice in either the current directory or Bingo's home directory. 
  5311.      Settings include:
  5312.  
  5313.                          &ins=1     (insert mode, 1=yes, 0=no)
  5314.                          &tabs=5    (tabsize)
  5315.                          &wrap=1    (wordwrap, 1=yes, 0=no)
  5316.                          &indent=1  (autoindention mode, 1=yes, 0=no)
  5317.                          &cmode=0   (C mode, 0=off, 1=mode 1, etc)
  5318.                          &rmarg=65  (right margin)
  5319.                          &smart=0   (smart tabs, 1=yes, 0=no)
  5320.                          &match=0   (matching mode, 1=yes, 0=no)
  5321.                          &bspace=0  (backspace mode)
  5322.                          &timed=256 (timed backups, range 0 - 32000)
  5323.                          &run=<chess_fname>
  5324.      See the Chess documentation for more information on the &run
  5325.      parameter.
  5326.  
  5327.                                                                 Repeat_last
  5328.      ----------------------------------------------------------------------
  5329.      Repeats the last function executed.  
  5330.  
  5331.                                                                Display_file
  5332.      ----------------------------------------------------------------------
  5333.      Will popup the named file into a scrollable box, similar to the help
  5334.      file.
  5335.  
  5336.                                                                  Exec_chess
  5337.      ----------------------------------------------------------------------
  5338.      This function will execute a single line of Chess code, typically a
  5339.      function or a function with its arguments.
  5340.  
  5341.  
  5342.                            Bingo 3.00 Reference Manual
  5343.                                        86
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.  
  5354.  
  5355.  
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373.  
  5374.  
  5375.  
  5376.  
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384.  
  5385.  
  5386.  
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.  
  5400.                            Bingo 3.00 Reference Manual
  5401.                                        87
  5402.  
  5403.  
  5404.  
  5405.  
  5406.                                Chess: The Language
  5407.                                -------------------
  5408.  
  5409.      Introduction
  5410.      ------------
  5411.           This section serves as the reference text for the Chess
  5412.      procedural language used by Bingo.  Chess is a simple yet powerful
  5413.      language with much in common with the C programming language.  While
  5414.      Bingo has been around for a number of years, as it grew more and more
  5415.      powerful I began to see that a procedural language would be necessary
  5416.      for users to fully unlock the power of Bingo.  And so, in November of
  5417.      1991 I began looking into interpreter and compiler theory.
  5418.           Adding a procedural language to an application is not a trivial
  5419.      undertaking.  There are a number of issues which all conflict with
  5420.      each other: the addition couldn't bloat Bingo beyond measure; the
  5421.      language couldn't be too trivial to be useful; Bingo had to work as
  5422.      easily with it as without it.  
  5423.           It was immediately clear that implementing an interpreter was far
  5424.      easier than a compiler.  However, interpreted code is usually far
  5425.      slower than compiled code.  But when I reflected on this, it occurred
  5426.      to me that most of a subprogram would be calls to Bingo functions,
  5427.      which would operate very quickly indeed.  So an interpreter was indeed
  5428.      feasible for what I had in mind.  
  5429.           Modeling the interpreter after the C programming language was
  5430.      also appealing, not just because I am most comfortable programming in
  5431.      C.  I was able to locate several texts which used C as a teaching
  5432.      interpreter.  This made the learning much easier.
  5433.           By April of 1992, I had a working standalone interpreter,
  5434.      designed so it would graft easily onto another application, and I had
  5435.      learned a whole lot about lexical analysis and interpreter theory. 
  5436.      Now all I had to do was graft this onto Bingo!  After a lot of design
  5437.      work, I started implementing it, and within a month it was reasonably
  5438.      complete.  The time since has been spent refining the interpreter,
  5439.      judiciously adding to the system function library, and testing,
  5440.      testing, testing!
  5441.  
  5442.  
  5443.  
  5444.  
  5445.  
  5446.  
  5447.  
  5448.  
  5449.  
  5450.  
  5451.  
  5452.  
  5453.  
  5454.  
  5455.  
  5456.  
  5457.  
  5458.                            Bingo 3.00 Reference Manual
  5459.                                        88
  5460.  
  5461.  
  5462.  
  5463.  
  5464.      Things to Possibly Come
  5465.      -----------------------
  5466.           Obviously, given the design of Chess, adding more library
  5467.      functions is in the future.  Chess's capabilities have to be kept in
  5468.      step with Bingo's own growth.  However, it is paramount that Chess
  5469.      stay relatively small.  The code for Chess added less than 20k in
  5470.      total to Bingo's executable and I don't want that to grow unchecked.
  5471.           This release of Chess is fully functionally, but the code is
  5472.      currently tuned for functionality, not for speed.  Future versions of
  5473.      Chess will be much more optimized for execution speed.
  5474.           For specific additions, I expect to quickly add access to BIOS
  5475.      and DOS interrupts, memory allocation, and several other low-level
  5476.      functions to augment Chess's current power. 
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490.  
  5491.  
  5492.  
  5493.  
  5494.  
  5495.  
  5496.  
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.                            Bingo 3.00 Reference Manual
  5517.                                        89
  5518.  
  5519.  
  5520.  
  5521.  
  5522.      The Body of a Chess Program
  5523.      ---------------------------
  5524.           A Chess program consists of the following format:
  5525.  
  5526.           <type> <global_varname1>
  5527.           ...
  5528.           <type> <global_varnameN>
  5529.           {
  5530.                <type> <local_varname1>
  5531.                ...
  5532.                <type> <local_varnameN>
  5533.                <statement1>
  5534.                ...
  5535.                <statementN>
  5536.           }
  5537.           <function_name1>
  5538.           <argtype> <arg1>
  5539.           ...
  5540.           <argtype> <argN>
  5541.           {
  5542.           }
  5543.           ...
  5544.           <function_nameN>{
  5545.           <argtype> <arg1>
  5546.           ...
  5547.           <argtype> <argN>
  5548.           {
  5549.           }
  5550.  
  5551.      The variables declared as <global_varname> are known as global
  5552.      variables, while the variables declared as <local_varname> are local
  5553.      variables.  Now we will take a look at what comprises these variables
  5554.      and statements.
  5555.  
  5556.  
  5557.  
  5558.  
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.                            Bingo 3.00 Reference Manual
  5575.                                        90
  5576.  
  5577.  
  5578.  
  5579.  
  5580.  
  5581.      Variables and Constants and Comments
  5582.      ------------------------------------
  5583.           Like most procedural languages, Chess programs are composed of
  5584.      three basic building blocks, Variables, Constants, and Comments.
  5585.           Variables are locations which hold information.  You can
  5586.      visualize them as shoeboxes with names.  Each of these locations can
  5587.      hold one of two basic types of information, integers (whole numbers)
  5588.      or characters (like the letter 'a').  Additionally, Chess uses
  5589.      'arrays' of variables (groups of 1 or more basic objects) and
  5590.      'pointers' to basic objects.  Arrays and pointers will be discussed in
  5591.      the next section.  Variables which haven't had a value assigned to
  5592.      them always start out loaded with zeros.
  5593.  
  5594.      Integers and Characters:
  5595.  
  5596.           Integer Chess variables are defined like this:
  5597.                int int_var;
  5598.      This defines the variable 'int_var' as a Chess integer.  Chess integer
  5599.      variables are represented internally as 4-byte values able to hold
  5600.      whole-number values in the range of -2147483648 to +2147483647.
  5601.      Character Chess variables are defined like this:
  5602.                char c_var;
  5603.      This defines the variables 'c_var' as a character variable.  Chess
  5604.      character variables are 1-byte values, and the values they can hold
  5605.      equate to the IBM Extended ASCII character set (see Bingo's ASCII
  5606.      Chart for a complete listing).  These letters have integer
  5607.      representation as well, for instance, the character 'A' has s decimal
  5608.      representation of 65.
  5609.           Variable names can be comprised of letters [a-zA-Z], digits [0-
  5610.      9], and the underscore character, and they are case sensitive.  The
  5611.      first 7 characters are significant.  You can define multiple variables
  5612.      on the same line:
  5613.                int int_var1,int_var2;
  5614.  
  5615.      Constants:
  5616.  
  5617.           Constants are numeric, character and string literal values. 
  5618.      Numeric constants consist of an optional negative sign [-] and one or
  5619.      more digits[0-9].  For example:
  5620.           123       12345     -90       -987654321
  5621.      are all integer constants.
  5622.           Character constants consist of a single character, (such as A),
  5623.      between single quotes (').  For example:
  5624.           'A'  'a'  '1'  'p'
  5625.      are all character constants.
  5626.           String constants are the third type of constant Chess supports. 
  5627.      String constants consist of a string of characters enclosed between
  5628.      double quotes.  For example:
  5629.           "Hello!"       "Hi"      "12,345 bottles of Beer"
  5630.      are all string constants.
  5631.  
  5632.                            Bingo 3.00 Reference Manual
  5633.                                        91
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.      Comments:
  5640.  
  5641.           Comments are also very important in Chess; they are strings of
  5642.      text in a program which are there for we humans to read, and for Chess
  5643.      to ignore.  Comments help the programmer document what he is doing in
  5644.      the program.  Comments begin with the two-letter sequence '/*' and
  5645.      extend until the end of the current line.  For example:
  5646.           int i;    /* define i as an integer
  5647.      The sequence '/* define i as an integer' is a comment. 
  5648.  
  5649.  
  5650.  
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664.  
  5665.  
  5666.  
  5667.  
  5668.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.                            Bingo 3.00 Reference Manual
  5691.                                        92
  5692.  
  5693.  
  5694.  
  5695.  
  5696.      Arrays and Pointers
  5697.      -------------------
  5698.           Using the two basic building block data types, integer and
  5699.      character, you can derive two other types of variables.  Arrays are
  5700.      "lists" of like types, and Pointer variables are variables which hold
  5701.      the address or location of other variables.
  5702.  
  5703.      Arrays:
  5704.  
  5705.           To define a character array, use the following: 
  5706.                char var_name[10];
  5707.      What does this mean?  This means, define a variable named 'var_name'
  5708.      as a list of 10 character blocks.  In Chess, you will deal with
  5709.      'strings' as a data type; a 'string' is a pointer to an array of
  5710.      characters containing a sequence of characters followed by a zero
  5711.      byte.  Hence the term "zero-terminated" string.  
  5712.           Similarly, an integer array would look like this:
  5713.                int int_name[20];
  5714.      This would define 'int_name' as a list of 20 integer blocks.
  5715.           So what does this mean?  Well, with arrays, you can access each
  5716.      element individually.  For example:
  5717.                int i[20];
  5718.                i[0]=1;
  5719.                i[19]=2;
  5720.      This code fragment shows that you can access each individual element. 
  5721.      Note that when you define an array N elements long, the elements are
  5722.      numbered 0 to (N-1).
  5723.  
  5724.      Pointers:
  5725.  
  5726.           A *pointer* variable is a variable which holds the address of
  5727.      another variable.  For example, in the declaration:
  5728.           int i[20];
  5729.      i[5], i[6], and i[8] are all Integer variables; however, 'i' all by
  5730.      itself is a pointer to the integer array, called an Integer Pointer. 
  5731.      Similarly, in the declaration:
  5732.           char hello[20];
  5733.      hello[0], hello[5], and hello[9] are all Character variables.  'hello'
  5734.      all by itself is a Character Pointer; a variable which holds the
  5735.      address of a character array.
  5736.           What do you need pointers for?  Well, primarily you use them to
  5737.      pass arguments back and forth to user and library functions.  You will
  5738.      see a lot of this in the sections on functions, but here are some
  5739.      examples:
  5740.           {
  5741.                char temp[80];                a)
  5742.                strcpy(temp,"Hello!");        b)
  5743.           }
  5744.      This program does 2 things.  First, a) declares an array of characters
  5745.      80 characters long.  Then, b) calls the library function 'strcpy'. 
  5746.      'strcpy' is used to copy the contents of one string into another. 
  5747.  
  5748.                            Bingo 3.00 Reference Manual
  5749.                                        93
  5750.  
  5751.  
  5752.  
  5753.  
  5754.      Strings in Chess are similar to those in C, as they are character
  5755.      arrays terminated by a character with a value of zero (0).  So, strcpy
  5756.      will fill in the contents of the array 'temp' with the string
  5757.      "Hello!".  After this function call, temp will look like this:
  5758.           temp[0]='H'
  5759.           temp[1]='e'
  5760.           temp[2]='l'
  5761.           temp[3]='l'
  5762.           temp[4]='o'
  5763.           temp[5]='!'
  5764.           temp[6]=0
  5765.  
  5766.           You can do arithmetic on pointers, similar to C, with on caveat. 
  5767.      Look at this example:
  5768.           {
  5769.                char temp[80];                a)
  5770.                strcpy(temp,"Hello!");        b)
  5771.                msg("%s",temp);               c)
  5772.                temp=temp+1;                  d)
  5773.                msg("%s",temp);               e)
  5774.           }
  5775.      Here we loaded 'temp' with the string "Hello!", just as before, then
  5776.      we did c), using the libray function msg to display the contents of
  5777.      'temp, the string "hello!".  Then d) increments temp by one byte.  Now
  5778.      when we execute e), temp points one byte further along than it did,
  5779.      and 'msg' will print out "ello!".  Now, temp[0] is 'e', not 'h'.  
  5780.           Similarly, you can increment integer pointers, but there is
  5781.      something to remember.  Look at this example:
  5782.           {
  5783.                int temp[80];                 a)
  5784.                temp[0]=1;                    b)
  5785.                temp[1]=2;                    c)
  5786.                msg("%ld",temp[0]);           d)
  5787.                temp=temp+4;                  e)
  5788.                msg("%ld",temp[0]);           f)
  5789.           }
  5790.      In this code fragment, a) declares am array of integers.  In b) and c)
  5791.      we set the first and second members of the arrays to 1 and 2
  5792.      respectively. d) using the 'msg' function to print the value of
  5793.      temp[0], which is 1.  e) increments temp by *4* bytes -- this is very
  5794.      necessary as each integer is 4 bytes wide.  Now when we print out
  5795.      temp[0], we get 2, as temp points to a different place.
  5796.  
  5797.  
  5798.  
  5799.  
  5800.  
  5801.  
  5802.  
  5803.  
  5804.  
  5805.  
  5806.                            Bingo 3.00 Reference Manual
  5807.                                        94
  5808.  
  5809.  
  5810.  
  5811.  
  5812.           Sometimes you will wish to declare a pointer without declaring
  5813.      any storage to go along with it.  You can do this in the following
  5814.      way:
  5815.           {
  5816.                char temp[80];           a)
  5817.                char p[0];               b)
  5818.                strcpy(temp,"Hello");    c)
  5819.                p=temp;                  d)
  5820.                msg("%s",p);             e)
  5821.           }
  5822.      Here, a) declares a character array with space for 80 characters.  b)
  5823.      declares a character array with *no* members; this declares 'p' to be
  5824.      a pointer to a character buffer.  c) copies the string "Hello" into
  5825.      'temp'.  d) assigns 'p' to point at 'temp'.  Finally, e) prints the
  5826.      character buffer pointed to by 'p', the string "Hello".
  5827.  
  5828.  
  5829.  
  5830.  
  5831.  
  5832.  
  5833.  
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.  
  5841.  
  5842.  
  5843.  
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.  
  5857.  
  5858.  
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.                            Bingo 3.00 Reference Manual
  5865.                                        95
  5866.  
  5867.  
  5868.  
  5869.  
  5870.      Operators & Expressions
  5871.      -----------------------
  5872.  
  5873.      Operators
  5874.           Operators are used to do mathematical operations, such as
  5875.      subtraction and division.  There are sixteen operators recognized by
  5876.      Chess.  Assuming 'a' and 'b' are declared as integers, they are:
  5877.  
  5878.           Operator/Precedence      Description
  5879.           -------------------      -----------
  5880.           unary +  (1)             When used all by itself before a number
  5881.                                    (or variable), denotes the number as a
  5882.                                    positive.  It is for readability
  5883.                                    purposes.
  5884.  
  5885.           unary -  (1)             Used to show a number (or variable) is
  5886.                                    negative. For example:   -a   to use the
  5887.                                    negative of 'a'.
  5888.  
  5889.           * (2)                    Multiplication.  For example: a*b
  5890.                                    multiples a times b.
  5891.  
  5892.           / (2)                    Division.  For example:  a/b  divides a
  5893.                                    by b.  Fractions are discarded, so 5/3
  5894.                                    is one; 4/3 is also one.
  5895.  
  5896.           % (2)                    Modulo or remainder operator.  a%b
  5897.                                    calculates the remainder of a when
  5898.                                    divided by b.  So 7%3 is 1, and 8%3 is
  5899.                                    2.
  5900.  
  5901.           + (3)                    Addition.  a+b adds a and b together.
  5902.  
  5903.           - (3)                    Subtraction.  a-b subtracts b from a.
  5904.  
  5905.           < (4)                    Less than comparison.  a<b will evaluate
  5906.                                    to 1 if a is less than b, 0 if not.
  5907.  
  5908.           > (4)                    Greater than comparison.  a>b will
  5909.                                    evaluate to 1 if a is greater than b, 0
  5910.                                    if it is not.
  5911.  
  5912.           <= (4)                   Less than or equal comparison.  a<=b
  5913.                                    will evaluate to 1 if a is less than or
  5914.                                    equal to b, 0 if not.
  5915.  
  5916.           >= (4)                   Greater than or equal comparison.  a>=b
  5917.                                    will evaluate to 1 if a is greater than
  5918.                                    or equal to b, 0 if not.
  5919.  
  5920.  
  5921.  
  5922.                            Bingo 3.00 Reference Manual
  5923.                                        96
  5924.  
  5925.  
  5926.  
  5927.  
  5928.           == (4)                   Equal comparison.  a==b evaluates to 1
  5929.                                    if a is equal to b, 0 if not.
  5930.  
  5931.           != (4)                   Not equal comparison.  a!=b will
  5932.                                    evaluate to 1 if a is not equal to b, 0
  5933.                                    if it is.
  5934.  
  5935.           && (4)                   Boolean AND operator.  a&&b evaluates to
  5936.                                    1 if both a and b are non-zero, 0 if
  5937.                                    either or both are 0.
  5938.  
  5939.           || (4)                   Boolean OR operator.  a||b evaluates to
  5940.                                    1 if either a or b, or both, are non-
  5941.                                    zero.  If both are zero, evaluates to
  5942.                                    zero.
  5943.  
  5944.           = (5)                    Assignment.  a=b sets a to be the value
  5945.                                    of b.
  5946.  
  5947.      The precedence value shows the order in which the operators are
  5948.      processed.  For example:
  5949.           7*3+5
  5950.      would evaluate the 7*3 first, since '*' has a precedence higher than
  5951.      '+', then the 21+5 would be evaluated, giving 26.
  5952.           Parenthesis can be used to change the order of operations.  For
  5953.      example:
  5954.           (7*3)+5        evaluates to 26 while
  5955.           7*(3+5)        evaluates to 56.
  5956.  
  5957.      Expressions
  5958.  
  5959.           Expressions are comprised of operators, parenthesis, and values. 
  5960.      Operators and parenthesis were discussed above.  Values are made up
  5961.      several different things:
  5962.           Constants      Variables      Functions
  5963.      Constants were discussed previously, as were variables.  Functions,
  5964.      both user and library, always return a value and work like special
  5965.      variables.  For example:
  5966.           int i;
  5967.           i=(7+8)*happy(1)+hello(2);
  5968.      where 'happy' and 'hello' are function names.
  5969.  
  5970.  
  5971.  
  5972.  
  5973.  
  5974.  
  5975.  
  5976.  
  5977.  
  5978.  
  5979.  
  5980.                            Bingo 3.00 Reference Manual
  5981.                                        97
  5982.  
  5983.  
  5984.  
  5985.  
  5986.      Program Statements
  5987.      ------------------
  5988.  
  5989.           While Chess is very similar to the C programming language, there
  5990.      are only 5 real statements:
  5991.           if                            if-else
  5992.           while                         return
  5993.           break
  5994.      In addition, a valid expression is a valid statement.  
  5995.           Chess statements must be one to a line of text; you cannot have a
  5996.      statement (and this includes an expression) span more than one line. 
  5997.      Each statement may be followed on its line by a comment.  Each
  5998.      statement may be followed by a semi-colon (;).
  5999.  
  6000.      IF
  6001.           The 'if' statement is used to make simple decisions.  Its syntax
  6002.      is:
  6003.           if (expression)
  6004.                <statement>
  6005.      If the 'expression' evaluates to a non-zero value, the <statement>
  6006.      will be executed.  If 'expression' evaluates to zero, <statement> will
  6007.      be skipped.  So:
  6008.           int i,j;
  6009.           i=5;
  6010.           j=0;
  6011.           if(i<5)
  6012.                j=10;
  6013.      Here, 'j' will be left the value '0', because the comparison 'i<5'
  6014.      will evaluate to zero.
  6015.  
  6016.      IF-ELSE
  6017.           The 'if-else' statement is also used to make simple decisions. 
  6018.      Its syntax is:
  6019.           if (expression)
  6020.                <statement1>
  6021.           else
  6022.                <statement2>
  6023.      If the 'expression' evaluates to a non-zero value, <statement1> will
  6024.      be executed.  If 'expression' evaluates to zero, <statement2> will be
  6025.      executed. So:
  6026.           int i,j;
  6027.           i=5;
  6028.           j=0;
  6029.           if(i<5)
  6030.                j=10;
  6031.           else
  6032.                j=5;
  6033.      Here, 'j' will be left the value '5', because the comparison 'i<5'
  6034.      will evaluate to zero.
  6035.  
  6036.  
  6037.  
  6038.                            Bingo 3.00 Reference Manual
  6039.                                        98
  6040.  
  6041.  
  6042.  
  6043.  
  6044.      WHILE
  6045.           The 'while' statement is used to repeat the execution of a
  6046.      statement.  The syntax is: 
  6047.           while (expression)
  6048.                <statement>
  6049.      Here, for as long as 'expression' evaluates to a non-zero value,
  6050.      statement will be executed.  Before each <statement> is executed,
  6051.      'expression' will be re-evaluated. So:
  6052.           int i;
  6053.           i=0;
  6054.           while(i<10)
  6055.                i=i+1;
  6056.      Here the statement 'i=i+1' will be executed 10 times, and 'i' will be
  6057.      left with the value '10';
  6058.  
  6059.      RETURN
  6060.           The 'return' statement is used to interrupt control flow at the
  6061.      current level and return a value.  It is primarily used to terminate
  6062.      the execution of a function.  For example:
  6063.           square (n)
  6064.           int n;
  6065.           {
  6066.                return( n * n );
  6067.           }
  6068.      This function will takes a single integer as an argument, and returns
  6069.      its square.
  6070.  
  6071.      BREAK
  6072.           The break statement interrupts the execution of the currently
  6073.      looping WHILE statement.  It can only be used within a WHILE loop. 
  6074.      For example:
  6075.  
  6076.           int i,j;
  6077.           i=0;
  6078.           while(1)
  6079.                if(i==10)
  6080.                     break;
  6081.                else
  6082.                     i=i+1;
  6083.           j=0;
  6084.      This will loop until 'i' is equal to 10, then 'break' out of the loop
  6085.      and assign zero to 'j'.
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.                            Bingo 3.00 Reference Manual
  6097.                                        99
  6098.  
  6099.  
  6100.  
  6101.  
  6102.      Compound Statements
  6103.           In the above definitions, several statements operate on other
  6104.      statements.  In addition to using a single statement for <statement>,
  6105.      you can use multiple statements as a single statement via the '{}'
  6106.      operators.  For example:
  6107.           int i;
  6108.           i=0;
  6109.           while(1){
  6110.                if(i==10)
  6111.                     break;
  6112.                i=i+1;
  6113.           }
  6114.      Here the sequence: { if(i==10) break; i=i+1; } is treated as a single
  6115.      statement.  This allows you to create complex code using the above
  6116.      simple statements.
  6117.  
  6118.  
  6119.  
  6120.  
  6121.  
  6122.  
  6123.  
  6124.  
  6125.  
  6126.  
  6127.  
  6128.  
  6129.  
  6130.  
  6131.  
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.  
  6146.  
  6147.  
  6148.  
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.                            Bingo 3.00 Reference Manual
  6155.                                        100
  6156.  
  6157.  
  6158.  
  6159.  
  6160.      User Functions
  6161.      --------------
  6162.           Functions are very powerful constructs used to encapsulate common
  6163.      chunks of functionality.  Function always return a value; if they do
  6164.      not explicitly return a value, they will return zero.  They can be
  6165.      used anywhere in an expression, except to the left of an assignment
  6166.      operator.  *User* functions are function which you, the user, write
  6167.      for your own benefit.
  6168.  
  6169.      An Example Chess Program:
  6170.           int i,j;
  6171.           square
  6172.           int n;
  6173.           {
  6174.                return(n*n);
  6175.           }
  6176.           {
  6177.                i=1;
  6178.                while (i<10) {
  6179.                     j=square(i);
  6180.                     msg("%ld*%ld = %ld",i,i,j);
  6181.                }
  6182.           }
  6183.  
  6184.      Declaration
  6185.           The declaration of a function is as follows:
  6186.                <fname>
  6187.                <argtype> arg1;
  6188.                ...
  6189.                <argtype> argN;
  6190.                {
  6191.                     <statement1>
  6192.                     ...
  6193.                     <statementN>
  6194.                }
  6195.      A function may have zero or more arguments declared.  If there are no
  6196.      arguments passed to it, the parentheses are not necessary.  If you
  6197.      look at the example above, you will note several things.  First of
  6198.      all, to *call* the function, you use the syntax:
  6199.           <function_name> ( arg1 .. argN )
  6200.      the user function 'square' is called in the above example as:
  6201.           j=square(i);
  6202.      This calls the function 'square', passing the argument value of 'i'
  6203.      into 'square'.  This value maps to 'square's first argument, 'n',
  6204.      which is multiplied by itself and the returned, placed into 'j'. 
  6205.           The number of arguments *passed* into a function must equal the
  6206.      number of arguments *declared* for the function.  For example, you
  6207.      could not use:
  6208.           j=square(10,3);
  6209.      as this tries to use 2 arguments for the function square, which is
  6210.      declared to use only one.
  6211.  
  6212.                            Bingo 3.00 Reference Manual
  6213.                                        101
  6214.  
  6215.  
  6216.  
  6217.  
  6218.           Arguments are passed into functions by passing their value. 
  6219.      Therefore, a function cannot change the value of an argument.  For
  6220.      instance, in our example above, 'i' is not changed by the use of 'n*n'
  6221.      in the function.  If we had a function:
  6222.           foo
  6223.           int n;
  6224.           {
  6225.                n=10;
  6226.           }
  6227.      and we called it using:
  6228.           i=5;
  6229.           foo(i);
  6230.      'i' would still have a value of 5, since changes to 'n' within the
  6231.      function 'foo' don't affect the argument 'i'.
  6232.           So how do you have a function change a variable?  To do this, you
  6233.      must pass a *pointer* to the variable you wish to change.  For
  6234.      example:
  6235.           foo
  6236.           int n[0]
  6237.           {
  6238.                n[0]=10;
  6239.           }
  6240.      and we called it using:
  6241.           int i[1];
  6242.           i[0]=4;
  6243.           foo(i);
  6244.      Now 'i[0]' will have the value '10'.  Here what was passed to 'foo'
  6245.      was not the value of 'i[0]', but rather the address of the integer
  6246.      array variable 'i'.
  6247.           You can do the same thing for strings.  Consider:
  6248.           foo
  6249.           char s[0];
  6250.           {
  6251.                strcpy(s,"Hello");
  6252.           }
  6253.      and
  6254.           char temp[80];
  6255.           foo(temp);
  6256.      Here the call to 'foo' passes in the pointer 'temp' to the argument
  6257.      's'.  Then 'foo' uses the system function 'strcpy' to copy in the
  6258.      string "Hello" to the address 's'.  Since 's' maps to 'temp', the
  6259.      string "Hello" is actually copied into the array 'temp'.
  6260.  
  6261.  
  6262.  
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.                            Bingo 3.00 Reference Manual
  6271.                                        102
  6272.  
  6273.  
  6274.  
  6275.  
  6276.      Variable Scope
  6277.           There is one important concern to keep in mind when using
  6278.      functions, and that is "variable scope".  To illustrate this, look at
  6279.      this program:
  6280.           int i;
  6281.           hello
  6282.           int n;
  6283.           {                             /* function hello
  6284.                i=i+n;
  6285.           }
  6286.           {                             /* main program
  6287.                int i;
  6288.                i=0;
  6289.                while(i<10){
  6290.                     hello(i);
  6291.                     i=i+1;
  6292.                }
  6293.           }
  6294.      Here you will notice the variable 'i' is declared twice, once as a
  6295.      global value and once as a local value within the main program.  So
  6296.      how does Chess know which one to use?  That is where variable scope
  6297.      comes into play. 
  6298.  
  6299.                               The Rules of Scoping
  6300.           1)   If the reference is within the main program and the variable
  6301.           is declared within the main program, that declaration is used.
  6302.           2)   If the reference is within the main program and the variable
  6303.           is *not* declared within the main program, the global declaration
  6304.           is used.
  6305.           3)   If the reference is within a function and the variable is
  6306.           declared within the function, that declaration is used.
  6307.           4)   If the reference is within a function and the variable is
  6308.           *not* declared within the function, the global declaration is
  6309.           used.
  6310.  
  6311.      So how do these rules apply above?  There are two declarations of the
  6312.      variable 'i'.  When 'i' is referenced within the main program, the
  6313.      main program declaration should be used.  These variable 'i' is
  6314.      separate from the global declaration of 'i' on the first line.  Now
  6315.      when 'i' is referenced within the function 'hello', there is now local
  6316.      declaration within 'hello', so therefore the global declaration of 'i'
  6317.      on the first line is used.
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.  
  6324.  
  6325.  
  6326.  
  6327.  
  6328.                            Bingo 3.00 Reference Manual
  6329.                                        103
  6330.  
  6331.  
  6332.  
  6333.  
  6334.      Library Functions
  6335.      -----------------
  6336.           Library functions are functions which are predefined for you by
  6337.      Chess.  There are many, and they can perform a variety of tasks.  See
  6338.      the "Library Function Reference" section for details.  Library
  6339.      functions can be used just like user functions.  If a user function or
  6340.      variable is defined with the same name as a library function, the user
  6341.      function or variable will be ignored.
  6342.  
  6343.  
  6344.  
  6345.  
  6346.  
  6347.  
  6348.  
  6349.  
  6350.  
  6351.  
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359.  
  6360.  
  6361.  
  6362.  
  6363.  
  6364.  
  6365.  
  6366.  
  6367.  
  6368.  
  6369.  
  6370.  
  6371.  
  6372.  
  6373.  
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379.  
  6380.  
  6381.  
  6382.  
  6383.  
  6384.  
  6385.  
  6386.                            Bingo 3.00 Reference Manual
  6387.                                        104
  6388.  
  6389.  
  6390.  
  6391.  
  6392.                           Using Chess From Within Bingo
  6393.                           -----------------------------
  6394.  
  6395.           Bingo is a powerful text editing engine and Chess is a very
  6396.      capable procedural language.  How do you use the two in concert to
  6397.      meet your editing needs?
  6398.  
  6399.      Chess Code in a *.CFG File
  6400.      --------------------------
  6401.           Your .CFG file, which KEYCFG turns into a .SET file, is where you
  6402.      place the Chess functions you wish to be able to execute within a
  6403.      Bingo editing section.  The way this is done is by enclosing a full
  6404.      chess program, or just a collection of Chess subfunctions in your .CFG
  6405.      file.  The code itself is placed between the two lines:
  6406.           chess-begin
  6407.      and
  6408.           chess-end
  6409.      each on a line alone. For example:
  6410.  
  6411.      <key assignments...>
  6412.      chess-start
  6413.      char temp[80];
  6414.      {                                  /* main program
  6415.           msg("Bingo has started up!");
  6416.           getkey();
  6417.      }
  6418.      /* this function will run the current file as subprogram.
  6419.      run_current{
  6420.           char temp[80],name[20];       /* declare working variables
  6421.           int i;
  6422.           b_cmd("modify_save");         /* save current file if dirty
  6423.           i=ask("file_path",temp)       /* get the file's path
  6424.           ask("file_name",name)         /* get the file's name
  6425.           strcpy(temp+i,name);          /* add the name to the path
  6426.           return(run(temp));            /* run the file and return
  6427.      }
  6428.      show_count(n)                 /* function to count off
  6429.      int n;                        /* one parameter
  6430.      {                             /* start function
  6431.           int i;                   /* declare an int
  6432.           i=1;                     /* start at 1
  6433.           while (i<=n){            /* until n...
  6434.                msg("Now at %ld!",i);    /* show the value
  6435.                getkey();                /* wait for a keystroke
  6436.                i=i+1;                   /* add 1 to i
  6437.           }
  6438.           msg("All done!!!!");     /* all finished!
  6439.           getkey();                /* wait for a final keystroke
  6440.      }                             /* end of the function
  6441.      chess-end
  6442.  
  6443.  
  6444.                            Bingo 3.00 Reference Manual
  6445.                                        105
  6446.  
  6447.  
  6448.  
  6449.  
  6450.           Here the code in the main body of the program will be executed
  6451.      when Bingo starts up.  The functions 'run_current' and 'show_count' is
  6452.      defined but not actually used by the startup code.
  6453.  
  6454.      Attaching Chess Functions to Keystrokes
  6455.      ---------------------------------------
  6456.           In the above example the function 'run_current' was defined
  6457.      without being directly used.  It is easy to attach this, or any other
  6458.      defined Chess function, to a specific set of keystrokes.  You do this
  6459.      via the 'interpret' token.  For example,
  6460.           #e   macro interpret 'run_current' return
  6461.      would define the Alt-e keystroke combination to run the function
  6462.      'run_current' with no arguments.  Likewise:
  6463.           #c   macro interpret 'show_count(9)' return
  6464.      defines the Alt-c combination to invoke the function 'show_count'
  6465.      function with an argument of 9.
  6466.           Using the 'macro interpret' mechanism, it is easy to extend
  6467.      Bingo's functionality.  Note: the 'interpret' token is not a normal
  6468.      Bingo function; it can only be used in a .CFG file.
  6469.  
  6470.      The Chess Command Line in Bingo
  6471.      -------------------------------
  6472.           From within Bingo itself, you can execute an arbitrary Chess
  6473.      function, with or without arguments, with no problem.  The function
  6474.      used to do this is 'exec_chess'.  This function will present a command
  6475.      line, on which a single Chess function call and its arguments can be
  6476.      entered.  For example, assuming the above code was entered in the .CFG
  6477.      file and compiled to a .SET file by KEYINFO, this line:
  6478.           show_count(4);
  6479.      would invoke the 'show_count' function with an argument of 4.
  6480.  
  6481.      Attaching Chess Functions to Profile Files
  6482.      ------------------------------------------
  6483.           Another very powerful way to execute Chess files is through a
  6484.      profile file.  Profile files are discussed in detail in the Bingo
  6485.      manual under the 'write_profile' function.  One of the parameters
  6486.      which can be set in a profile file is the '&run' parameter.  This
  6487.      parameter is used to name a file containing a Chess program to
  6488.      execute.  The syntax for using this in the profile file is:
  6489.           &run=c:\test.chs
  6490.      This instructs Bingo to execute the Chess program contained in
  6491.      "c:\test.chs" when the profile file is loaded.  Remember, profile
  6492.      files are loaded based on a file's extension.
  6493.  
  6494.  
  6495.  
  6496.  
  6497.  
  6498.  
  6499.  
  6500.  
  6501.  
  6502.                            Bingo 3.00 Reference Manual
  6503.                                        106
  6504.  
  6505.  
  6506.  
  6507.  
  6508.      Running a Chess File on Startup
  6509.      -------------------------------
  6510.           Finally, you can tell Bingo to directly execute a Chess program
  6511.      file using the '-c' command line flag.  For example:
  6512.           be -cc:\test.chs
  6513.      will run the Chess program file "c:\test.chs" on startup.  Note that
  6514.      you may only run one Chess file on startup, though of course that
  6515.      program could run as many others as it wanted, using the Chess library
  6516.      function 'run'.
  6517.  
  6518.      Order of Execution on Startup
  6519.      -----------------------------
  6520.           On startup, both keyboard macros and Chess programs can be
  6521.      startup automatically.  It is important to know the order in which
  6522.      this will occur.  The order is as follows:
  6523.           1) macro files entered per file via the '-x' flag
  6524.           2) Chess startup code (main program code from .CFG file)
  6525.           3) line/column commands per file via the '-p' flag
  6526.           4) Chess file for each profile file loaded
  6527.  
  6528.      Debugging Chess Programs
  6529.      ------------------------
  6530.           In order to make developing Chess programming easier, a
  6531.      rudimentary tracing function has been provided, accessed through the
  6532.      'conf_chess_trace' function.  When this option is turned on, prior to
  6533.      execution of each line of Chess code a dialog box will be popped up
  6534.      showing the line number and the line of code.  If you press the
  6535.      'Enter' key, execution will continue.  Pressing Escape will abort the
  6536.      execution.
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.  
  6547.  
  6548.  
  6549.  
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.  
  6557.  
  6558.  
  6559.  
  6560.                            Bingo 3.00 Reference Manual
  6561.                                        107
  6562.  
  6563.  
  6564.  
  6565.  
  6566.                            Library Function Reference
  6567.                            --------------------------
  6568.                                                                         Ask
  6569.      ----------------------------------------------------------------------
  6570.           Format:   int ask(char what[], ...) 
  6571.      Description:   Used to 'ask' the status of various internal
  6572.      Bingo/Chess variables.  Over 50 variables, both text and integer, are
  6573.      available for your inspection.  'Ask' can be used only to retrieve
  6574.      values of system variables; it cannot set them.  
  6575.           The calling sequence may differ for each variable, but generally
  6576.      they are of the format:
  6577.                i=ask(<ask argument>,[possible extra arguments...])
  6578.      as in
  6579.                i=ask("file_new") and
  6580.                i=ask("file_name",dest)
  6581.      The first of these checks whether the current file is new (returning 1
  6582.      for True) while the latter places the current file's name into the
  6583.      character buffer 'dest', returning the length of the name.
  6584.  
  6585.                                                                        Atoi
  6586.      ----------------------------------------------------------------------
  6587.           Format:   int atoi(char aval[])   
  6588.      Description:   Converts the ASCII string representation of a number
  6589.      into its integer equivalent.  For example, suppose the character
  6590.      buffer test[80] contains the string "12345".  Then the call
  6591.           i=atoi(test)
  6592.      would return the integer value 12,345 into the integer variable 'i'.
  6593.  
  6594.                                                                       B_cmd
  6595.      ----------------------------------------------------------------------
  6596.           Format:   int b_cmd(char cmd[],...) 
  6597.      Description:   Used to execute Bingo commands from within Chess.  For
  6598.      example:
  6599.           i=b_cmd("down_page");
  6600.      would attempt to execute the Bingo command 'down_page'.  The
  6601.      True/False return value of 'down_page' will be returned and placed in
  6602.      the integer variable 'i'.  To execute a Bingo command and preload
  6603.      arguments, make use of the Chess functions 'Key' & 'Str'.  For
  6604.      example:
  6605.           i=b_cmd("swap_execute",str("dir/p"),key("return"));
  6606.      would execute the command "dir/p", swapping out to DOS.  The return
  6607.      value would be placed in 'i'.  See the sections of 'Str' & 'Key'
  6608.      respectively for a more in-depth discussion of how they work.
  6609.  
  6610.                                                                        Beep
  6611.      ----------------------------------------------------------------------
  6612.           Format:   int beep(void) 
  6613.      Description:   Sounds a beep on the PC speaker, using Bingo's current
  6614.      frequency and duration settings.  Always returns integer 1.
  6615.  
  6616.  
  6617.  
  6618.                            Bingo 3.00 Reference Manual
  6619.                                        108
  6620.  
  6621.  
  6622.  
  6623.  
  6624.                                                                    Box_pick
  6625.      ----------------------------------------------------------------------
  6626.           Format:   int box_pick(char title[],int style,int start,
  6627.                          char pick1[], ... char pickN[])
  6628.      Description:   Used to allow the user to pick from a set of options. 
  6629.      Displays a dialog box, with one line for each choice.  You may pick
  6630.      from 3 different styles:
  6631.           1 --> display only
  6632.           2 --> display a menubar, with Return selecting the choice
  6633.           3 --> display a menubar, but also allow the first character of
  6634.      each choice to select a choice.
  6635.           The 'start' parameter allows control over where the menubar in
  6636.      styles 2 & 3 begins, with 0 being the first possibility, 1 the second
  6637.      possibility, and so on.  After the first 3 arguments, any number of
  6638.      character buffer arguments may be added.  These are the possible
  6639.      choices.  For example:
  6640.           i=box_pick("Test choices",2,0,"Choice 1",Choice 2","Choice 3");
  6641.      would allow the user to choose from between 3 choices ("Choice 1",
  6642.      "Choice 2", "Choice 3") using a menubar.  
  6643.           'box_pick' returns the number of the choice made, with 0 being
  6644.      the first, 1 the second, etc.  If the user presses Escape, a -1 is
  6645.      returned.
  6646.           Be aware there is an upper limit of about 40 on the number of
  6647.      arguments you can use.  When you need to choose from a larger list of
  6648.      choices, use the 'pick_file' function.
  6649.  
  6650.                                                                     Get_str
  6651.      ----------------------------------------------------------------------
  6652.           Format:   int box_str(char dest[],char prompt[],int max) 
  6653.      Description:   Used to ask for string input from the user via Bingo's
  6654.      internal dialog box.  'Box_str' will place the string in the 'dest'
  6655.      character buffer.  'prompt' will be used as a prompt string to tell
  6656.      the user what you are asking for.  'max' is the maximum number of
  6657.      characters allowed.  'dest' must have room for 'max' + 1 characters.
  6658.      For example:
  6659.           char ret[21];
  6660.           int i;
  6661.           ret[0]=0;
  6662.           i=box_str(ret,"What is your name?",20);
  6663.      declares a character buffer with room for 21 characters, an integer,
  6664.      sets the char buffer 'ret' to empty, then asks for the users name, no
  6665.      longer than 20 characters, placing the result in the buffer 'ret'. 
  6666.      'box_str' returns the character last pressed.
  6667.  
  6668.  
  6669.  
  6670.  
  6671.  
  6672.  
  6673.  
  6674.  
  6675.  
  6676.                            Bingo 3.00 Reference Manual
  6677.                                        109
  6678.  
  6679.  
  6680.  
  6681.  
  6682.                                                                   Get_yesno
  6683.      ----------------------------------------------------------------------
  6684.           Format:   int box_yesno(char text[],int default) 
  6685.      Description:   Asks the user a yes/no question, allowing only yes, no,
  6686.      and abort as return values.  It displays the text in the character
  6687.      buffer 'text' and a choice of Yes/No.  The default choice is No if the
  6688.      'default' argument is 0, Yes if the 'default' argument is 1.  The user
  6689.      can press 'y' for Yes, 'n' for No, Return for the current option, or
  6690.      Escape to abort.
  6691.           If the user chooses Yes, 'box_yesno' will return 1. If the user
  6692.      chooses No, it will return 0.  If the user hits Escape, 'box_yesno'
  6693.      will return -1.
  6694.  
  6695.                                                                    Get_char
  6696.      ----------------------------------------------------------------------
  6697.           Format:   int box_char(char text[])  
  6698.      Description:   Displays the contents of the character buffer 'text' on
  6699.      the screen, in a dialog box.  It waits for a keystroke, and returns
  6700.      the ASCII value of the keystroke.
  6701.  
  6702.                                                               Get_curr_text
  6703.      ----------------------------------------------------------------------
  6704.           Format:   int get_curr_text(char dest[],int len) 
  6705.      Description:   Places a copy of 'len' characters, starting from the
  6706.      current file's current cursor position, into the destination character
  6707.      buffer 'dest'.  If the current line does not contain 'len' characters
  6708.      past the current cursor position, the return buffer will be padded
  6709.      with spaces on the right side.
  6710.  
  6711.  
  6712.  
  6713.  
  6714.  
  6715.  
  6716.  
  6717.  
  6718.  
  6719.  
  6720.  
  6721.  
  6722.  
  6723.  
  6724.  
  6725.  
  6726.  
  6727.  
  6728.  
  6729.  
  6730.  
  6731.  
  6732.  
  6733.  
  6734.                            Bingo 3.00 Reference Manual
  6735.                                        110
  6736.  
  6737.  
  6738.  
  6739.  
  6740.                                                                   Get_fname
  6741.      ----------------------------------------------------------------------
  6742.           Format:   int get_fname(char dest[], char prompt[],int defok,
  6743.                          int wildok)
  6744.      Description:   Allows you to make use of Bingo's filename validation
  6745.      and directory list-picking intrinsics.  This will prompt the user for
  6746.      a filename using 'prompt'.  If the 'defok' flag is True (non-zero) and
  6747.      the filename has no extension, Bingo will attempt to use the defined
  6748.      default extension ('conf_def_ext') and fine a match.  If 'wildok' is
  6749.      False (zero) and wildcard characters are present, 'get_fname' will
  6750.      present the user with a directory list-picker.  Once a selection has
  6751.      been made, the selection will be placed in the character buffer
  6752.      'dest'.  
  6753.           'get_fname' returns an integer greater than or equal to zero for
  6754.      True, less than zero for False.
  6755.  
  6756.                                                                    Get_text
  6757.      ----------------------------------------------------------------------
  6758.           Format:   int get_text(int line,int column,char dest[],int len); 
  6759.      Description:   Places a copy of 'len' characters, starting from the
  6760.      current file's 'line' and 'column' position, into the destination
  6761.      character buffer 'dest'.  If the 'line' does not contain 'len'
  6762.      characters past the 'column' position, the return buffer will be
  6763.      padded with spaces on the right side.
  6764.  
  6765.                                                                      Getkey
  6766.      ----------------------------------------------------------------------
  6767.           Format:   int getkey(void) 
  6768.      Description:   Waits for a returns the value of a keypress.  Whether
  6769.      the extended keyboard BIOS is utilized is dependent on Bingo's setting
  6770.      ('conf_key_bios').  This value is not simply the 8-bit ASCII value of
  6771.      the keypress, but the 16-bit scan-code/ASCII combination.  The
  6772.      HEXKEY.COM utility will help in discerning particular key-values.
  6773.  
  6774.                                                                        Itoa
  6775.      ----------------------------------------------------------------------
  6776.           Format:   int itoa(int val,char dest[]) 
  6777.      Description:   Converts a character buffer representation of a number
  6778.      into its integer equivalent.  For example:
  6779.           int i;
  6780.           char temp[20];
  6781.           strcpy(temp,"12345");
  6782.           i=atoi(temp);
  6783.      will leave 'i' with the value 12,345.
  6784.  
  6785.  
  6786.  
  6787.  
  6788.  
  6789.  
  6790.  
  6791.  
  6792.                            Bingo 3.00 Reference Manual
  6793.                                        111
  6794.  
  6795.  
  6796.  
  6797.  
  6798.                                                                         Key
  6799.      ----------------------------------------------------------------------
  6800.           Format:   int key(char s[]) 
  6801.      Description:   This is a specialized function very similar to 'str'. 
  6802.      It is used in conjunction with 'b_cmd' to pass keystrokes to intrinsic
  6803.      Bingo commands.  For example:
  6804.           b_cmd("window_resize",key("down_arrow"),
  6805.                key("down_arrow"),key("return"));
  6806.      would resize the current window to be 2 lines bigger (assuming there
  6807.      was room, of course).  The series of 'key' statements "preload" the
  6808.      keystrokes shown in the order shown. Allowable keynames currently
  6809.      include:
  6810.                return
  6811.                escape
  6812.                up_arrow
  6813.                down_arrow
  6814.                left_arrow
  6815.                right_arrow
  6816.      Note: In the above example, remember that the command would have to be
  6817.      all on the same line to be properly interpreted by Chess.
  6818.  
  6819.                                                                      Memcpy
  6820.      ----------------------------------------------------------------------
  6821.           Format:   int memcpy(char dest[], char src[], int n) 
  6822.      Description:   Copies 'n' bytes of memory from the buffer 'src' to the
  6823.      buffer 'dest'.
  6824.  
  6825.                                                                         Msg
  6826.      ----------------------------------------------------------------------
  6827.           Format:   int msg(char format[], ...) 
  6828.      Description:   Displays a formatted message on the status line.  This
  6829.      message will remain displayed until normal screen processing
  6830.      redisplays the status line, or until an 'update_display' command is
  6831.      issued.  Formatting follows the same conventions as the 'sformat'
  6832.      function.
  6833.  
  6834.                                                                   Pick_file
  6835.      ----------------------------------------------------------------------
  6836.           Format:   int pick_file(char fname[],char title[],int style,
  6837.                          int start) 
  6838.      Description:   Used as an alternative to the 'box_pick' function when
  6839.      the number of choices is large.  This function will work the same as
  6840.      'box_pick', except that the choices will be contained in the file
  6841.      whose name is in the character buffer 'fname'.  'Pick_file' returns
  6842.      the same values as 'box_pick' does.
  6843.  
  6844.  
  6845.  
  6846.  
  6847.  
  6848.  
  6849.  
  6850.                            Bingo 3.00 Reference Manual
  6851.                                        112
  6852.  
  6853.  
  6854.  
  6855.  
  6856.                                                                    Put_char
  6857.      ----------------------------------------------------------------------
  6858.           Format:   int put_char(int val) 
  6859.      Description:   Interprets an integer value 'val' exactly as if it was
  6860.      typed in.  For example:
  6861.           put_char(17408);
  6862.      will cause Bingo to interpret the keystroke F10.  Likewise:
  6863.           put_char(65)
  6864.      will cause Bingo to interpret the keystroke 'A'.
  6865.  
  6866.                                                                    Put_text
  6867.      ----------------------------------------------------------------------
  6868.           Format:   int put_text(int insert,int line,int col,char text[]);
  6869.      Description:   This function allows the user to place a string of 0-
  6870.      terminated text, contained in the character buffer 'text', into the
  6871.      current file.  The text will be placed on line number 'line' at column
  6872.      'col'.  If the 'insert' flag is True (non-zero), any text currently
  6873.      located there will be pushed to the right.  If the 'insert' flag is
  6874.      False (zero), any text located in that space will be overwritten.  For
  6875.      example:
  6876.           put_text(1,100,4,"Hi!")
  6877.      will cause the text string "Hi!" to be inserted on line 100 starting
  6878.      at column 4.
  6879.  
  6880.                                                               Put_text_curr
  6881.      ----------------------------------------------------------------------
  6882.           Format:   int put_text_curr(int insert,char text[]);
  6883.      Description:   Function similarly to 'put_text', however the text will
  6884.      be placed at the urrent cursor position in the current file.
  6885.  
  6886.                                                                         Run
  6887.      ----------------------------------------------------------------------
  6888.           Format:   int run(char fname[]) 
  6889.      Description:   Allows the user to run another Chess program, contained
  6890.      in the file named in 'fname'.  This file will have access to global
  6891.      variables defined in the currently executing Chess porgram.
  6892.  
  6893.  
  6894.  
  6895.  
  6896.  
  6897.  
  6898.  
  6899.  
  6900.  
  6901.  
  6902.  
  6903.  
  6904.  
  6905.  
  6906.  
  6907.  
  6908.                            Bingo 3.00 Reference Manual
  6909.                                        113
  6910.  
  6911.  
  6912.  
  6913.  
  6914.                                                                    Sformat 
  6915.      ----------------------------------------------------------------------
  6916.           Format:   int sformat (char dest[],char str[],...) 
  6917.      Description:   Allows formatting of strings using the C language
  6918.      'printf' conventions.  Places the formatted string in 'dest'.  While
  6919.      the full complement of replacements are available, only three basic
  6920.      primitives will be described here.
  6921.           %ld       integer
  6922.           %s        string
  6923.           %c        character
  6924.      'Sformat' returns the length of the formatted string.  For example:
  6925.           int i,j;
  6926.           char dest[80];
  6927.           char temp[30];
  6928.           i=sformat(dest,"Hi %s.","Chris");
  6929.                --> 'dest' contains "Hi Chris."
  6930.                --> 'i' contains 9
  6931.  
  6932.           i=sformat(dest,"Hello %s %c.","Chris",'S');
  6933.                --> 'dest' contains "Hi Chris S."
  6934.                --> 'i' contains 11
  6935.  
  6936.           j=99;
  6937.           strcpy(temp,"Chris");
  6938.           i=sformat(dest,"%ld red ballons, %s!",j,temp);
  6939.                --> 'dest' contains "99 red ballons, Chris!"
  6940.                --> 'i' contains 21
  6941.  
  6942.      Note:  All of Borland TurboC's 'printf' primitives are supported, but
  6943.      you must rememember a few things.  In particular, Chess integers are
  6944.      4-bytes longs, not normal Turbo C integers.  Thus:
  6945.           i=300000;
  6946.           sformat(dest,"%d",i);
  6947.      will not work properly.
  6948.  
  6949.                                                                         Str
  6950.      ----------------------------------------------------------------------
  6951.           Format:   int str(char s[]) 
  6952.      Description:   This is a specialized function very similar to 'key'. 
  6953.      It is used in conjunction with 'b_cmd' to pass strings of text to
  6954.      intrinsic Bingo commands.  For example:
  6955.           b_cmd("swap_execute",str("dir /p"),key("return"));
  6956.      would cause Bingo to swap to DOS and execute the command "dir/p".  The
  6957.      'key("return")' preloads the keystroke 'Retunr' as well.
  6958.  
  6959.  
  6960.  
  6961.  
  6962.  
  6963.  
  6964.  
  6965.  
  6966.                            Bingo 3.00 Reference Manual
  6967.                                        114
  6968.  
  6969.  
  6970.  
  6971.  
  6972.                                                                      Strcat
  6973.      ----------------------------------------------------------------------
  6974.           Format:   int strcat(char dest[],char src[]) 
  6975.      Description:   Conccatenates the contents of one 0-terminate string
  6976.      onto another:
  6977.           char temp1[20],temp2[20];
  6978.           strcpy(temp1,"Hi ");
  6979.           strcpy(temp2,"Chris!");
  6980.           strcat(temp1,temp2);
  6981.      would leave the string "Hi Chris!" in the character buffer 'temp1'
  6982.  
  6983.                                                                      Strcmp
  6984.      ----------------------------------------------------------------------
  6985.           Format:   int strcmp(char s1[],char s2[]) 
  6986.      Description:   Compares two strings (character buffers).  Returns 0 if
  6987.      the strings match, <0 if string 's1' is less than 's2', and >0 if 's1'
  6988.      is greater than 's2'.  For example:
  6989.  
  6990.           strcmp("Hello","Hi")     returns   <0
  6991.           strcmp("Hello","Alfie")  returns   >0
  6992.           strcmp("hello",Hello")   returns   0
  6993.  
  6994.                                                                      Strcpy
  6995.      ----------------------------------------------------------------------
  6996.           Format:   int strcpy(char dest[],char src[]) 
  6997.      Description:   Copies the contents of 'src', a 0-terminated string,
  6998.      into the character buffer 'dest', including the 0.  Always returns 1.
  6999.  
  7000.                                                                      Strlen
  7001.      ----------------------------------------------------------------------
  7002.           Format:   int strlen(char src[]) 
  7003.      Description:   Returns the length of the 0-terminated string in 'src'. 
  7004.      For example:
  7005.           char tempo[80];
  7006.           strcpy(tempo,"Hi!")
  7007.           i=strlen(tempo);
  7008.      would leave 'i' with the value of 3.
  7009.  
  7010.                                                                      Strndx
  7011.      ----------------------------------------------------------------------
  7012.           Format:   int strndx(char src[],char c) 
  7013.      Description:   Returns the integer offset of the *first* occurance of
  7014.      'c' in the 0-terminated string 'src'.  Return -1 if 'c' is not found. 
  7015.      Position zero (0) is the first character.  For example:
  7016.           strndx("Hello",'o')      returns   4
  7017.           strndx("Hello",'l')      returns   2
  7018.           strndx("Hello",'p')      returns   -1
  7019.  
  7020.  
  7021.  
  7022.  
  7023.  
  7024.                            Bingo 3.00 Reference Manual
  7025.                                        115
  7026.  
  7027.  
  7028.  
  7029.  
  7030.                                                              Update_display
  7031.      ----------------------------------------------------------------------
  7032.           Format:   int update_display(void) 
  7033.      Description:   Refreshes the current window and the command line. 
  7034.      Always returns 1.
  7035.  
  7036.                                                                  Valid_name
  7037.      ----------------------------------------------------------------------
  7038.           Format:   int valid_name(char s[]) 
  7039.      Description:   Attempts to validate the filename in the character
  7040.      buffer 's'.  Will interpret the ":temp:" and ":home:" identifiers
  7041.      automatically.  Will convert forward slahses to back slashes.  Will
  7042.      attempt to expand 's' to a full directory specification.  Always
  7043.      returns 1.
  7044.           's' MUST have enough room for the expanded filename; on MS-DOS
  7045.      filesystems, this equates to roughly 80 characters.
  7046.  
  7047.  
  7048.  
  7049.  
  7050.  
  7051.  
  7052.  
  7053.  
  7054.  
  7055.  
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.  
  7074.  
  7075.  
  7076.  
  7077.  
  7078.  
  7079.  
  7080.  
  7081.  
  7082.                            Bingo 3.00 Reference Manual
  7083.                                        116
  7084.  
  7085.  
  7086.  
  7087.  
  7088.      "Ask" Arguments
  7089.      ---------------
  7090.  
  7091.           Chess's 'ask' library function is the means through which a
  7092.      program can retrieve information about Bingo's current settings and
  7093.      status.  This section will list each of the 'ask' arguments
  7094.      recognized, and what they return.  Most 'ask' arguments return an
  7095.      integer, and are used like this:
  7096.           i=ask("file_autoindent");
  7097.      True/False arguments such as 'file_autoindent' return 1 for True, 0
  7098.      for False.
  7099.           Other types of 'ask' arguments fetch character buffer data, such
  7100.      as:
  7101.           char dest[80];
  7102.           ask("file_name",dest);
  7103.      would place the current file name in the character buffer 'dest'.
  7104.  
  7105.  
  7106.                                                             File_autoindent
  7107.      ----------------------------------------------------------------------
  7108.      Calling Sequence: ask("file_autoindent")
  7109.           Description: Autoindent setting for current file.
  7110.               Returns: Integer, 1 if set to True, 0 for False.
  7111.  
  7112.                                                                 File_bspace
  7113.      ----------------------------------------------------------------------
  7114.      Calling Sequence: ask("file_bspace")
  7115.           Description: Backspace mode setting for current file.
  7116.               Returns: Integer 0-3, meaning:
  7117.                     0    -->  No Tab Delete
  7118.                     1    -->  One Tab Delete
  7119.                     2    -->  Delete All
  7120.                     3    -->  Rubout
  7121.  
  7122.                                                                File_changes
  7123.      ----------------------------------------------------------------------
  7124.      Calling Sequence: ask("file_changes")
  7125.           Description: Changes to current file since last backup.
  7126.               Returns: Integer number equal to the number of "change"
  7127.      events which have hit the current file.  Thisis the same number of
  7128.      changes which the timed backups are triggered from.
  7129.  
  7130.                                                                  File_cmode
  7131.      ----------------------------------------------------------------------
  7132.      Calling Sequence: ask("file_cmode")
  7133.           Description: C-Mode setting for the current file.
  7134.               Returns: Integer describing which type of C-Mode indention is
  7135.      active for the current file. Types are:
  7136.           0    None
  7137.           1    ANSI
  7138.           2    Classical
  7139.  
  7140.                            Bingo 3.00 Reference Manual
  7141.                                        117
  7142.  
  7143.  
  7144.  
  7145.  
  7146.                                                                 File_column
  7147.      ----------------------------------------------------------------------
  7148.      Calling Sequence: ask("file_column")
  7149.           Description: Column position in current file.
  7150.               Returns: Integer denoting the column position of the current
  7151.      file. 1 is the first column, etc.
  7152.  
  7153.                                                               File_dialogue
  7154.      ----------------------------------------------------------------------
  7155.      Calling Sequence: ask("file_dialogue")
  7156.           Description: Setting of the dialoge box/command-line option.
  7157.               Returns: Integer value 0 if "boxes" are being used for User
  7158.      interface, 1 if "command-line" is being used for User interface.
  7159.  
  7160.                                                                  File_dirty
  7161.      ----------------------------------------------------------------------
  7162.      Calling Sequence: ask("file_dirty")
  7163.           Description: Has the current file changed since editing began?.
  7164.               Returns: Integer denoting True (1) or False (0) if the file
  7165.      has been changed since editing began.
  7166.  
  7167.                                                                  File_id_no
  7168.      ----------------------------------------------------------------------
  7169.      Calling Sequence: ask("file_id_no")
  7170.           Description: Unique ID number for current file.
  7171.               Returns: Integer equivalent to the unique Identification
  7172.      number of this file.  This number if unique for each file edited
  7173.      during a sesssion.  This is useful for creating temporary files
  7174.      independent of the files name.
  7175.  
  7176.                                                                File_in_mark
  7177.      ----------------------------------------------------------------------
  7178.      Calling Sequence: ask("file_in_mark")
  7179.           Description: Is a block marked in the current file.
  7180.               Returns: Integer denoting if the block is marked and if so,
  7181.      what type of block it is.  Types are:
  7182.           0    None
  7183.           1    Line marking
  7184.           2    Point marking
  7185.           3    Vertical marking
  7186.  
  7187.                                                                File_insmode
  7188.      ----------------------------------------------------------------------
  7189.      Calling Sequence: ask("file_insmode")
  7190.           Description: Insert mode on for current file.
  7191.               Returns: Integer True (1) or False (0) denoting whther the
  7192.      current file is in Insert mode.
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.                            Bingo 3.00 Reference Manual
  7199.                                        118
  7200.  
  7201.  
  7202.  
  7203.  
  7204.                                                                   File_line
  7205.      ----------------------------------------------------------------------
  7206.      Calling Sequence: ask("file_line")
  7207.           Description: Line number in the current file.
  7208.               Returns: Integer denoting the line the cursor is on in the
  7209.      current file.  The first line is 1.
  7210.  
  7211.                                                               File_matching
  7212.      ----------------------------------------------------------------------
  7213.      Calling Sequence: ask("file_matching")
  7214.           Description: Matching mode for the current file.
  7215.               Returns: Integer True (1) or False (0) depending when the
  7216.      current files Matching mode setting.
  7217.  
  7218.                                                                   File_name
  7219.      ----------------------------------------------------------------------
  7220.      Calling Sequence: ask("file_name",char dest[])
  7221.           Description: Filename, with extension, of the current file.
  7222.               Returns: Into the character buffer 'dest', retrieves the file
  7223.      name, without the path, of the current file.  For example, editing the
  7224.      file "c:\edit\temp.c":
  7225.           char temp[80];
  7226.           ask("file_name",temp);
  7227.                --> 'temp' now contains "temp.c"
  7228.      Note: There must be sufficient space in 'dest' for the filename.
  7229.  
  7230.                                                                    File_new
  7231.      ----------------------------------------------------------------------
  7232.      Calling Sequence: ask("file_new")
  7233.           Description: Was the current file new when loaded?
  7234.               Returns: True (1) or False (0) depending on if the current
  7235.      file was created when it was loaded.
  7236.  
  7237.                                                                 File_number
  7238.      ----------------------------------------------------------------------
  7239.      Calling Sequence: ask("file_number")
  7240.           Description: Number of the current file in the ring.
  7241.               Returns: Integer, ranging from 0 to (number of files - 1),
  7242.      denoting the number of the current file in the ring.  The first file
  7243.      is 0, the second is 1, etc.  This is not to be confused with the
  7244.      "file_id_no", which is unique for each file edited in the session.
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.  
  7255.  
  7256.                            Bingo 3.00 Reference Manual
  7257.                                        119
  7258.  
  7259.  
  7260.  
  7261.  
  7262.                                                                   File_path
  7263.      ----------------------------------------------------------------------
  7264.      Calling Sequence: ask("file_path",char dest[])
  7265.           Description: Pathname of the current file, ending with backslash.
  7266.               Returns: Into a character buffer 'dest', the full path
  7267.      including the drive, of the current file.  For example, editing the
  7268.      file "c:\edit\temp.c":
  7269.           char temp[80];
  7270.           ask("file_path",temp);
  7271.                --> 'temp' contains "c:\edit\"
  7272.      Note: "file_path" will always end with a backslash, so that the
  7273.      "file_name" can be concatenated onto the end of the path.  'dest' must
  7274.      have enough room for the "file_path".
  7275.  
  7276.                                                                File_rmargin
  7277.      ----------------------------------------------------------------------
  7278.      Calling Sequence: ask("file_rmargin")
  7279.           Description: Right margin setting for current file.
  7280.               Returns: Integer which is the setting of the right margin for
  7281.      the current file.
  7282.  
  7283.                                                             File_smart_tabs
  7284.      ----------------------------------------------------------------------
  7285.      Calling Sequence: ask("file_smart_tabs")
  7286.           Description: Smart tab setting for current file.
  7287.               Returns: Integer True (1) or False (0) denoting the setting
  7288.      of the SmartTabs option for the current file.
  7289.  
  7290.                                                                File_tabsize
  7291.      ----------------------------------------------------------------------
  7292.      Calling Sequence: ask("file_tabsize")
  7293.           Description: Tab size for the current file.
  7294.               Returns: Integer value of the current file's tab size
  7295.      setting.
  7296.  
  7297.                                                                  File_timed
  7298.      ----------------------------------------------------------------------
  7299.      Calling Sequence: ask("file_timed")
  7300.           Description: Timed backup setting for the current file.
  7301.               Returns: Integer setting of the timed backup option for the
  7302.      current file.
  7303.  
  7304.                                                               File_w_height
  7305.      ----------------------------------------------------------------------
  7306.      Calling Sequence: ask("file_w_height")
  7307.           Description: Current window height.
  7308.               Returns: Integer height, in rows, of the current window. 
  7309.      This does not include the status line.
  7310.  
  7311.  
  7312.  
  7313.  
  7314.                            Bingo 3.00 Reference Manual
  7315.                                        120
  7316.  
  7317.  
  7318.  
  7319.  
  7320.                                                                 File_w_left
  7321.      ----------------------------------------------------------------------
  7322.      Calling Sequence: ask("file_w_left")
  7323.           Description: Current window left location.
  7324.               Returns: Integer column upon which the curent windows left
  7325.      side starts.
  7326.  
  7327.                                                                  File_w_top
  7328.      ----------------------------------------------------------------------
  7329.      Calling Sequence: ask("file_w_top")
  7330.           Description: Current window one pos.
  7331.               Returns: Integer value of the row upon which the current
  7332.      windows top row sits.
  7333.  
  7334.                                                                File_w_width
  7335.      ----------------------------------------------------------------------
  7336.      Calling Sequence: ask("file_w_width")
  7337.           Description: Width of current window.
  7338.               Returns: Integer widht, in columns, of the current window.
  7339.  
  7340.                                                               File_wordwrap
  7341.      ----------------------------------------------------------------------
  7342.      Calling Sequence: ask("file_wordwrap")
  7343.           Description: Wordwrap setting of current file.
  7344.               Returns: Integer True (1) or False (0) setting of the current
  7345.      files Wrodwrap option.
  7346.  
  7347.                                                                      File_x
  7348.      ----------------------------------------------------------------------
  7349.      Calling Sequence: ask("file_x")
  7350.           Description: X location of cursor within the current window.
  7351.               Returns: Integer X, or column, location of the cursor within
  7352.      the window, using the window top as row 1, and the window left as
  7353.      column 1.
  7354.  
  7355.                                                                      File_y
  7356.      ----------------------------------------------------------------------
  7357.      Calling Sequence: ask("file_y")
  7358.           Description: Y location of cursor on the current window.
  7359.               Returns: Integer Y, or row, location of the cursor within the
  7360.      window, using the window top as row 1, and the window left as column
  7361.      1.
  7362.  
  7363.                                                              Sys_autoindent
  7364.      ----------------------------------------------------------------------
  7365.      Calling Sequence: ask("sys_autoindent")
  7366.           Description: System autoindent setting.
  7367.               Returns: Integer default autoindent setting, True (1) or
  7368.      False (0).
  7369.  
  7370.  
  7371.  
  7372.                            Bingo 3.00 Reference Manual
  7373.                                        121
  7374.  
  7375.  
  7376.  
  7377.  
  7378.                                                               Sys_autostrip
  7379.      ----------------------------------------------------------------------
  7380.      Calling Sequence: ask("sys_autostrip")
  7381.           Description: System autostrip setting.
  7382.               Returns: Integer default high bit stripping setting, True (1)
  7383.      or False (0).
  7384.  
  7385.                                                               Sys_autotrail
  7386.      ----------------------------------------------------------------------
  7387.      Calling Sequence: ask("sys_autotrail")
  7388.           Description: System autotrail setting.
  7389.               Returns: Integer default auto trailing space setting, True
  7390.      (1) or False (0).
  7391.  
  7392.                                                                 Sys_backups
  7393.      ----------------------------------------------------------------------
  7394.      Calling Sequence: ask("sys_backups",char dest[])
  7395.           Description: System backup extension.
  7396.               Returns:
  7397.  
  7398.                                                                  Sys_bounce
  7399.      ----------------------------------------------------------------------
  7400.      Calling Sequence: ask("sys_bounce")
  7401.           Description: System cursor bounce setting.
  7402.               Returns: Integer default bounce cursor setting, True (1) or
  7403.      False (0).
  7404.  
  7405.                                                                  Sys_bspace
  7406.      ----------------------------------------------------------------------
  7407.      Calling Sequence: ask("sys_bspace")
  7408.           Description: System backspacee setting.
  7409.               Returns: Integer default backspace setting.  See the entry
  7410.      for "file_bspace" for a listing of valid return codes.
  7411.  
  7412.                                                                Sys_carraige
  7413.      ----------------------------------------------------------------------
  7414.      Calling Sequence: ask("sys_carraige")
  7415.           Description: Carraige return setting.
  7416.               Returns: Integer default carraige-return splits line setting,
  7417.      True (1) or False (0).
  7418.  
  7419.                                                                   Sys_cmode
  7420.      ----------------------------------------------------------------------
  7421.      Calling Sequence: ask("sys_cmode")
  7422.           Description: System C-Mode setting.
  7423.               Returns: Integer default C-Mode setting; see the entry for
  7424.      file_cmode for an explanation of return codes.
  7425.  
  7426.  
  7427.  
  7428.  
  7429.  
  7430.                            Bingo 3.00 Reference Manual
  7431.                                        122
  7432.  
  7433.  
  7434.  
  7435.  
  7436.                                                                    Sys_cols
  7437.      ----------------------------------------------------------------------
  7438.      Calling Sequence: ask("sys_cols")
  7439.           Description: System # columns.
  7440.               Returns: Integer number of columns on the screen.
  7441.  
  7442.                                                                  Sys_delete
  7443.      ----------------------------------------------------------------------
  7444.      Calling Sequence: ask("sys_delete")
  7445.           Description: Delete joins lines setting.
  7446.               Returns: Integer default setting for the delte-join option,
  7447.      True (1) or False (0).
  7448.  
  7449.                                                              Sys_extensions
  7450.      ----------------------------------------------------------------------
  7451.      Calling Sequence: ask("sys_extensions", int which, char dest[])
  7452.           Description: Default file extensions.
  7453.               Returns: The [which] currently defined file extension.  For
  7454.      example:
  7455.           char temp[80];
  7456.           ask("sys_extensions",3,temp);
  7457.      will retrieve the 3rd defined file extension into the character buffer
  7458.      'dest'.  If the extension is not defined, 'dest' will be filled in
  7459.      with the empty string "".
  7460.  
  7461.                                                                  Sys_fcount
  7462.      ----------------------------------------------------------------------
  7463.      Calling Sequence: ask("sys_fcount")
  7464.           Description: Count of files - 1 in the ring.
  7465.               Returns: Integer number of files currently in the ring, less
  7466.      one.
  7467.  
  7468.                                                                 Sys_inmacro
  7469.      ----------------------------------------------------------------------
  7470.      Calling Sequence: ask("sys_inmacro")
  7471.           Description: Is Bingo currently replaying a macro?
  7472.               Returns: Integer default sys_inmacro setting, True (1) or
  7473.      False (0).
  7474.  
  7475.                                                                 Sys_insmode
  7476.      ----------------------------------------------------------------------
  7477.      Calling Sequence: ask("sys_insmode")
  7478.           Description: Default insert mode.
  7479.               Returns: Integer default Insert mode setting, True (1) or
  7480.      False (0).
  7481.  
  7482.  
  7483.  
  7484.  
  7485.  
  7486.  
  7487.  
  7488.                            Bingo 3.00 Reference Manual
  7489.                                        123
  7490.  
  7491.  
  7492.  
  7493.  
  7494.                                                                Sys_matching
  7495.      ----------------------------------------------------------------------
  7496.      Calling Sequence: ask("sys_matching")
  7497.           Description: System matching mode setting.
  7498.               Returns: Integer default Matching mode setting, True (1) or
  7499.      False (0).
  7500.  
  7501.                                                                   Sys_mouse
  7502.      ----------------------------------------------------------------------
  7503.      Calling Sequence: ask("sys_mouse")
  7504.           Description: Is a mouse available?
  7505.               Returns: Integer True (1) or False (0), denoting whether the
  7506.      mouse is available.
  7507.  
  7508.                                                                   Sys_rdefs
  7509.      ----------------------------------------------------------------------
  7510.      Calling Sequence: ask("sys_rdefs",char dest[])
  7511.           Description: Replace default string.
  7512.               Returns: Places in the 'dest' character buffer the current
  7513.      Replace default string.
  7514.  
  7515.                                                               Sys_recording
  7516.      ----------------------------------------------------------------------
  7517.      Calling Sequence: ask("sys_recording")
  7518.           Description: Is Bingo currently recording a macro?
  7519.               Returns: True (1) or False (0), depending on whether Bingo is
  7520.      currently recording a macro.
  7521.  
  7522.                                                                 Sys_rmargin
  7523.      ----------------------------------------------------------------------
  7524.      Calling Sequence: ask("sys_rmargin")
  7525.           Description: System right margin setting.
  7526.               Returns: Integer value of the current default right margin
  7527.      setting.
  7528.  
  7529.                                                                    Sys_rows
  7530.      ----------------------------------------------------------------------
  7531.      Calling Sequence: ask("sys_rows")
  7532.           Description: Number of rows on screen.
  7533.               Returns: Integer number of rows displayed on the screen.
  7534.  
  7535.                                                                   Sys_sdefs
  7536.      ----------------------------------------------------------------------
  7537.      Calling Sequence: ask("sys_sdefs",char dest[])
  7538.           Description: Search defaults.
  7539.               Returns: Places in the 'dest' character buffer the current
  7540.      Search default string.
  7541.  
  7542.  
  7543.  
  7544.  
  7545.  
  7546.                            Bingo 3.00 Reference Manual
  7547.                                        124
  7548.  
  7549.  
  7550.  
  7551.  
  7552.                                                              Sys_smart_tabs
  7553.      ----------------------------------------------------------------------
  7554.      Calling Sequence: ask("sys_smart_tabs")
  7555.           Description: System smart tab setting.
  7556.               Returns: Integer default SmartTab setting, True (1) or False
  7557.      (0).
  7558.  
  7559.                                                                 Sys_tabsize
  7560.      ----------------------------------------------------------------------
  7561.      Calling Sequence: ask("sys_tabsize")
  7562.           Description: System tab size.
  7563.               Returns: Integer default Tab Size setting.
  7564.  
  7565.                                                                   Sys_timed
  7566.      ----------------------------------------------------------------------
  7567.      Calling Sequence: ask("sys_timed")
  7568.           Description: System timed backup setting.
  7569.               Returns: Integer denoting the number of "changes" which can
  7570.      elapse between autosaves.  Zero (0) means no saves will be done.
  7571.  
  7572.                                                              Sys_word_delim
  7573.      ----------------------------------------------------------------------
  7574.      Calling Sequence: ask("sys_word_delim",char dest[])
  7575.           Description: System defined word delimiters.
  7576.               Returns: Copies into the character buffer 'dest' the string
  7577.      of characters which are *not* in a word.
  7578.  
  7579.                                                                Sys_wordwrap
  7580.      ----------------------------------------------------------------------
  7581.      Calling Sequence: ask("sys_wordwrap")
  7582.           Description: System wordwrap setting.
  7583.               Returns: Integer default wordwrap setting, True (1) or False
  7584.      (0).
  7585.  
  7586.                                                                    Sys_zoom
  7587.      ----------------------------------------------------------------------
  7588.      Calling Sequence: ask("sys_zoom")
  7589.           Description: Is the current window zoomed?.
  7590.               Returns: Integer default zoom window setting, True (1) or
  7591.      False (0).
  7592.  
  7593.                                                                     Version
  7594.      ----------------------------------------------------------------------
  7595.      Calling Sequence: ask("version", char dest[])
  7596.           Description: Current Bingo version.
  7597.               Returns: Copies into the character buffer 'dest' a zero-
  7598.      terminated string containing the current Bingo versions.  This string
  7599.      will be at most 20 characters, including the zero.
  7600.  
  7601.  
  7602.  
  7603.  
  7604.                            Bingo 3.00 Reference Manual
  7605.                                        125
  7606.  
  7607.  
  7608.  
  7609.  
  7610.                                                                     Ws_size
  7611.      ----------------------------------------------------------------------
  7612.      Calling Sequence: ask("ws_size")
  7613.           Description: Interpreter workspace size.
  7614.               Returns: Integer size of the currently executing Chess
  7615.      subprogram size, in charcters.
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.  
  7623.  
  7624.  
  7625.  
  7626.  
  7627.  
  7628.  
  7629.  
  7630.  
  7631.  
  7632.  
  7633.  
  7634.  
  7635.  
  7636.  
  7637.  
  7638.  
  7639.  
  7640.  
  7641.  
  7642.  
  7643.  
  7644.  
  7645.  
  7646.  
  7647.  
  7648.  
  7649.  
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.                            Bingo 3.00 Reference Manual
  7663.                                        126
  7664.  
  7665.  
  7666.  
  7667.  
  7668.      Chess Execution Errors
  7669.      ----------------------
  7670.                                                                       Abort
  7671.      ----------------------------------------------------------------------
  7672.      This error will be generated when the execution of a Chess program is
  7673.      interrupted by the user by pressing and holding the Scroll Lock key.
  7674.  
  7675.                                                                   Arguments
  7676.      ----------------------------------------------------------------------
  7677.      This error will be generated when the number of arguments used to call
  7678.      a function does not equal the number of arguments declared for the
  7679.      function.
  7680.  
  7681.                                                             Bingo Intrinsic
  7682.      ----------------------------------------------------------------------
  7683.      This error is generated by a call to the 'b_cmd' library function when
  7684.      the first argument passed to it does not equal a valid Bingo intrinsic
  7685.      function.
  7686.  
  7687.                                                                       Class
  7688.      ----------------------------------------------------------------------
  7689.      This error will be generated when a variable which is not an array is
  7690.      referenced with an array subscript.
  7691.  
  7692.                                                                 Declaration
  7693.      ----------------------------------------------------------------------
  7694.      This error is generated when a Chess program attempts to reference a
  7695.      variable which has not been declared.
  7696.  
  7697.                                                                 Exec Interp
  7698.      ----------------------------------------------------------------------
  7699.      This error will be generated when Bingo lacks memoery to execute the
  7700.      command line given in the 'Chess_exec' function.
  7701.  
  7702.                                                     Function Table Overflow
  7703.      ----------------------------------------------------------------------
  7704.      This will be generated when the number of declared functions exceeds
  7705.      the size of the function table set using the BOPTS utility program.
  7706.  
  7707.                                                         Interpretor Parsing
  7708.      ----------------------------------------------------------------------
  7709.      This is an error generated when the Chess interpreter has encountered
  7710.      illegal syntax.
  7711.  
  7712.                                                                  Left Brace
  7713.      ----------------------------------------------------------------------
  7714.      This error is generated when a left brace ('{') is not found when
  7715.      Chess expects to find one.
  7716.  
  7717.  
  7718.  
  7719.  
  7720.                            Bingo 3.00 Reference Manual
  7721.                                        127
  7722.  
  7723.  
  7724.  
  7725.  
  7726.                                                                  Left-Value
  7727.      ----------------------------------------------------------------------
  7728.      This error is generated when Chess finds that the value on the left
  7729.      side of an assignment statement is illegal, such as a constant or a
  7730.      function.
  7731.  
  7732.                                                                        Link
  7733.      ----------------------------------------------------------------------
  7734.      This error is generated when Chessin unable to resolve all of the
  7735.      function and variable references in a program. 
  7736.  
  7737.                                                                       Range
  7738.      ----------------------------------------------------------------------
  7739.      This error is generated when you attempt to reference an array element
  7740.      outside the declared range.
  7741.  
  7742.                                                                 Right Paren
  7743.      ----------------------------------------------------------------------
  7744.      This error is generated if Chess fails to find matching right
  7745.      parentheses or right braces.
  7746.  
  7747.                                                                 Stack (Pop)
  7748.      ----------------------------------------------------------------------
  7749.      This is an internal error indicating a stack error; report these to
  7750.      the error as soon as possible, along with a copy of the code that
  7751.      caused it.
  7752.  
  7753.                                                                Stack (Push)
  7754.      ----------------------------------------------------------------------
  7755.      This is an internal error indicating a stack error; report these to
  7756.      the error as soon as possible, along with a copy of the code that
  7757.      caused it.
  7758.  
  7759.                                                                      Symbol
  7760.      ----------------------------------------------------------------------
  7761.      This error is generated when Chess cannot find a symbol used as either
  7762.      a variable or function.
  7763.  
  7764.                                                                      Syntax
  7765.      ----------------------------------------------------------------------
  7766.      This error is generated when basic Chess syntax rules are broken.
  7767.  
  7768.                                                                 System Call
  7769.      ----------------------------------------------------------------------
  7770.      This error is generated when a call to one of Chess's library
  7771.      functions is called without the proper number of arguments.
  7772.  
  7773.  
  7774.  
  7775.  
  7776.  
  7777.  
  7778.                            Bingo 3.00 Reference Manual
  7779.                                        128
  7780.  
  7781.  
  7782.  
  7783.  
  7784.                                                             System Variable
  7785.      ----------------------------------------------------------------------
  7786.      This error is generated when a call to the 'ask' library function uses
  7787.      the incorrect number of arguments, or if the 'ask' argument is
  7788.      unrecognized.
  7789.  
  7790.                                                     Variable Table Overflow
  7791.      ----------------------------------------------------------------------
  7792.      This will be generated when the number of declared variables exceeds
  7793.      the size of the variable table set using the BOPTS utility program.
  7794.  
  7795.  
  7796.  
  7797.  
  7798.  
  7799.  
  7800.  
  7801.  
  7802.  
  7803.  
  7804.  
  7805.  
  7806.  
  7807.  
  7808.  
  7809.  
  7810.  
  7811.  
  7812.  
  7813.  
  7814.  
  7815.  
  7816.  
  7817.  
  7818.  
  7819.  
  7820.  
  7821.  
  7822.  
  7823.  
  7824.  
  7825.  
  7826.  
  7827.  
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.                            Bingo 3.00 Reference Manual
  7837.                                        129
  7838.  
  7839.  
  7840.  
  7841.  
  7842.                              Some Example Chess Code
  7843.                              -----------------------
  7844.  
  7845.      This section will have some example Chess code which you may find
  7846.      useful.
  7847.  
  7848.      Example #1: Execute the Current File
  7849.      ------------------------------------
  7850.           This function is also seen elsewhere, but it is so useful it
  7851.      warrants inclusion again.  It first saves the current file if need be,
  7852.      the builds its full filespec and executes it as Chess program file.
  7853.  
  7854.      run_current{
  7855.           char temp[80],name[20];       /* declare working variables
  7856.           int i;
  7857.           b_cmd("modify_save");         /* save current file if dirty
  7858.           i=ask("file_path",temp)       /* get the file's path
  7859.           ask("file_name",name)         /* get the file's name
  7860.           strcpy(temp+i,name);          /* add the name to the path
  7861.           return(run(temp));            /* run the file and return
  7862.      }
  7863.  
  7864.      Example #2: Factorials
  7865.      ----------------------
  7866.           This pair of functions finds the factorials of numbers. 
  7867.      'find_fact' asks the user for a number and calls 'do_fact' to actually
  7868.      figure it out.  'do_fact' uses the classical recursive method to
  7869.      calculate the factorial of an integer.
  7870.  
  7871.      find_fact{
  7872.           char temp[30];
  7873.           int i;
  7874.           if((box_str(temp,"Find factorial of What number?",2)%256)!=27){
  7875.                /* if the user didn't press escape 
  7876.                i=atoi(temp);       /* convert to an integer
  7877.                i=do_fact(i);       /* find its factorial
  7878.                msg("%s factorial is %ld",temp,i); /* print it out
  7879.                getkey();           /* wait for a keypress
  7880.           }
  7881.      }
  7882.      do_fact        /* this function is a recursive one
  7883.      int n;              /* single parameter
  7884.      {
  7885.           if(n<1)        /* if illegal, return 0
  7886.                return(0);
  7887.           else if(n==1)  /* if we are done with recursive call
  7888.                return(1);
  7889.           else           /* else, recurse another level
  7890.                return(do_fact(n-1)*n);
  7891.      }
  7892.  
  7893.  
  7894.                            Bingo 3.00 Reference Manual
  7895.                                        130
  7896.  
  7897.  
  7898.  
  7899.  
  7900.      Example #3: Synchronized Scrolling
  7901.      ----------------------------------
  7902.           This is a nifty function.  Bound to a key, it will automatically
  7903.      scroll two side-by-side windows down one page together.  It uses the
  7904.      system library function 'ask' to see if there are two windows present,
  7905.      then uses 'b_cmd' to do the necessary window manipulation.  Note how
  7906.      the return values of the Bingo intrinsics are used to return a status
  7907.      code of 0 for False, 1 for True.  This enables the function to be used
  7908.      with the 'repeat' function and such, terminating properly when the
  7909.      function fails.
  7910.  
  7911.      double_down{
  7912.           int i;              /* declare an integer
  7913.           if(ask("file_w_width")!=ask("sys_cols")){    /* do we have side
  7914.                                                        /* by side windows?
  7915.                if(ask("file_w_left")==1){         /* if the left window...
  7916.                     i=b_cmd("down_page");         /* do both windows
  7917.                     b_cmd("window_next");
  7918.                     i=i+b_cmd("down_page");
  7919.                     b_cmd("window_previous");
  7920.                }
  7921.                else{                         /* if the right window...
  7922.                     i=b_cmd("down_page");         /* do both windows
  7923.                     b_cmd("window_previous");
  7924.                     i=i+b_cmd("down_page");
  7925.                     b_cmd("window_next");
  7926.                }
  7927.                if(i<2)        /* did either operation fail?
  7928.                     i=0;
  7929.           }
  7930.           else{          /* single window, just do the normaloperation
  7931.                i=b_cmd("down_page");
  7932.           }
  7933.           return(i);
  7934.      }
  7935.  
  7936.  
  7937.  
  7938.  
  7939.  
  7940.  
  7941.  
  7942.  
  7943.  
  7944.  
  7945.  
  7946.  
  7947.  
  7948.  
  7949.  
  7950.  
  7951.  
  7952.                            Bingo 3.00 Reference Manual
  7953.                                        131
  7954.  
  7955.  
  7956.  
  7957.  
  7958.                                 License Agreement
  7959.                                 -----------------
  7960.  
  7961.           This section tells you is how to become a registered user once
  7962.      you decide that you like the program and want to use it on a regular
  7963.      basis.
  7964.  
  7965.           Bingo is distributed under the shareware marketing concept; it is
  7966.      not free software and it has not been released to the public domain.
  7967.      The documentation, executable images, and all other files distributed
  7968.      with Bingo are copyrighted.
  7969.  
  7970.           Shareware is a way of distributing computer software that allows
  7971.      you to try out a program before you purchase it. Programs distributed
  7972.      as shareware typically give you some period of time to use the program
  7973.      and evaluate its usefulness to you. If the program doesn't meet your
  7974.      needs, you're under no obligation to pay for it. If you do find the
  7975.      program useful and wish to continue using it on a regular basis, the
  7976.      shareware program's author usually requests that you pay for the
  7977.      program by sending him or her a completed registration form and
  7978.      payment. This is the approach I have taken in making Bingo available
  7979.      to the public.
  7980.  
  7981.           If you find Bingo to be a useful addition to your software
  7982.      library, you're requested to become a registered user by completing
  7983.      the enclosed registration form and returning it along with the
  7984.      indicated license/registration fee. I hope that you will agree that
  7985.      the $40.00 license fee (for the Single Version registration) or $75.00
  7986.      license fee (for the Lifetime registration) is a small price to pay
  7987.      for the continued use of the program. It requires a large investment
  7988.      to develop, market, and support a product of this complexity. Your
  7989.      support in the form of a license/registration fee will continue to
  7990.      make good software available at low prices.
  7991.  
  7992.           Quantity discounts are available to business, government, and
  7993.      other organizations that wish to use Bingo on multiple computer
  7994.      systems. Bingo is also available at very special rates to
  7995.      organizations who wish to use it for promotional purposes. Write the
  7996.      author for information on using the program this way.
  7997.  
  7998.           You are granted a limited license to use and examine Bingo on a
  7999.      trial basis to determine if Bingo is suitable for your needs. If you
  8000.      find Bingo useful and continue to use it on a regular basis, you
  8001.      should complete and return the registration form along with the
  8002.      indicated license/registration fee.
  8003.  
  8004.  
  8005.  
  8006.  
  8007.  
  8008.  
  8009.  
  8010.                            Bingo 3.00 Reference Manual
  8011.                                        132
  8012.  
  8013.  
  8014.  
  8015.  
  8016.           You are encouraged to make copies of Bingo for the trial use of
  8017.      other individuals and organizations, subject to the following
  8018.      restrictions:
  8019.           1)   All Bingo distribution files must be copied in unmodified
  8020.                form.
  8021.           2)   You may not include any other files with the distributed
  8022.                copy.
  8023.  
  8024.           You may not distribute Bingo with any other product or
  8025.      service without written permission of the author.
  8026.  
  8027.           Bingo may be included on electronic bulletin board systems for
  8028.      downloading by users of the bulletin board provided the above
  8029.      restrictions are met.
  8030.  
  8031.           Bingo and all accompanying materials are provided "as is" without
  8032.      warranty of any kind. The entire risk of using Bingo is assumed by
  8033.      you.
  8034.  
  8035.           The author, Christopher R. S. Schanck, makes no warranty of any
  8036.      kind, expressed or implied, including but not limited to any
  8037.      warranties of merchantability and fitness for a particular purpose.
  8038.  
  8039.           In no event will the author, Christopher R. S. Schanck, be liable
  8040.      for any damages whatsoever arising out of your use or inability to use
  8041.      the program.
  8042.  
  8043.           If you use Bingo on a regular basis, you should complete the
  8044.      registration form at the end of this document and return it along with
  8045.      the indicated license/registration fee. Registration gives you the
  8046.      right to use the software as documented in the license.
  8047.  
  8048.           A registration fee of $40.00 establishes you as a One-Time
  8049.      registered user of the current version of Bingo, with the next version
  8050.      your for free.  After that, successive versions must be re-registered.
  8051.  
  8052.           A registration of $75.00 establishes you as a Lifetime
  8053.      registrant, and in this situation you are entitled to the next version
  8054.      of Bingo free.  After that, you will be notified of each subsequent
  8055.      version, and they will be available for a five (5) dollar fee.
  8056.  
  8057.           When you submit your registration fee, unless you specifically
  8058.      request otherwise, the author will mail you a copy of the current
  8059.      version of Bingo and accompanying documentation on disk (3.5" or
  8060.      5.25") for free.  Mailing addresses outside of the continental United
  8061.      States will need to submit a $15.00 shipping and handling charge.
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.                            Bingo 3.00 Reference Manual
  8069.                                        133
  8070.  
  8071.  
  8072.  
  8073.  
  8074.                          Registration Form - Bingo 3.00
  8075.                          -------------------------------
  8076.  
  8077.      Remit to:            Christopher R.S. Schanck
  8078.                                    PO Box 279
  8079.                                 Hanover MD 21076
  8080.  
  8081.                                    Bingo 3.00
  8082.  
  8083.      Disk size, circle one: (   3.5"   /   5.25"   / SEND NO DISK )
  8084.  
  8085.  
  8086.      Registration OPTIONS:
  8087.  
  8088.      One-Time Registration ............ _____ @ $ 40.00 each  $ _____
  8089.  
  8090.      Lifetime Registration ............ _____ @ $ 75.00 each  $ _____
  8091.  
  8092.  
  8093.  
  8094.      Bingo printed Documentation ...... _____ @ $ 15.00 each  $ _____
  8095.  
  8096.  
  8097.  
  8098.                                                     Subtotal  $ _____
  8099.  
  8100.  
  8101.      Shipping, Outside the Continental U.S. ......... $ 15.00 $ _____
  8102.  
  8103.                                             Total (U.S.Funds) $ _____
  8104.          
  8105.  
  8106.  
  8107.      Name: __________________________________________________________
  8108.  
  8109.      Company: _______________________________________________________
  8110.  
  8111.      Address: _______________________________________________________
  8112.  
  8113.      ________________________________________________________________
  8114.  
  8115.      ________________________________________________________________
  8116.  
  8117.      Day Phone: _______________________________ 
  8118.  
  8119.      Eve Phone: _______________________________
  8120.  
  8121.  
  8122.                     Prices subject to change without notice.
  8123.  
  8124.  
  8125.  
  8126.                            Bingo 3.00 Reference Manual
  8127.                                        134
  8128.  
  8129.  
  8130.  
  8131.  
  8132.                           Registration Form - Continued
  8133.  
  8134.      I acquired Bingo 3.00 from
  8135.  
  8136.      [ ] - Friend                
  8137.  
  8138.      [ ] - Computer Club
  8139.      Which One? ______________________________________________________
  8140.  
  8141.      [ ] - Electronic BBS        
  8142.      Which One? ______________________________________________________
  8143.      Phone #? ________________________________________________________
  8144.  
  8145.      [ ] - Other
  8146.      Specify: ________________________________________________________
  8147.  
  8148.      I would also appreciate any input you would care to give concerning
  8149.      Bingo. If you have any ideas or comments that would make Bingo a
  8150.      better program, then please let me know.
  8151.  
  8152.  
  8153.  
  8154.  
  8155.  
  8156.  
  8157.  
  8158.  
  8159.  
  8160.  
  8161.  
  8162.  
  8163.  
  8164.  
  8165.  
  8166.  
  8167.  
  8168.  
  8169.  
  8170.  
  8171.  
  8172.  
  8173.  
  8174.  
  8175.  
  8176.  
  8177.  
  8178.  
  8179.  
  8180.  
  8181.  
  8182.  
  8183.  
  8184.                            Bingo 3.00 Reference Manual
  8185.                                        135
  8186.  
  8187.  
  8188.  
  8189.  
  8190.                                Site License Policy
  8191.                                -------------------
  8192.  
  8193.           This is a license for use of the software within a particular
  8194.      organization and is not in any way transferable.  This permits the use
  8195.      and copying of the software for as many computers as are contracted
  8196.      for.  Distributing, repackaging, or reselling of the software to third
  8197.      parties is not allowed.  Both Single Version and Lifetime site
  8198.      licenses are available.  A Bingo Site License includes one diskette
  8199.      and one set of printed documentation.  A Bingo site license must be
  8200.      negotiated directly with the Author.
  8201.                                     
  8202.           Pricing Schedule for Single Version Registration:
  8203.            
  8204.                  2 -  10 CPU's     $30.00 each CPU     
  8205.                 11 -  25 CPU's     $24.00 each CPU     
  8206.                 26 -  50 CPU's     $20.00 each CPU     
  8207.                 51 - 100 CPU's     $14.00 each CPU     
  8208.                101 - 150 CPU's     $11.00 each CPU         
  8209.                151 - 200 CPU's     $10.00 each CPU     
  8210.                201+ CPU's        $1750.00 one time cost 
  8211.                                                            
  8212.           Pricing Schedule for Lifetime Registration:
  8213.                                                            
  8214.                  2 -  10 CPU's     $57.00 each CPU     
  8215.                 11 -  25 CPU's     $45.00 each CPU     
  8216.                 26 -  50 CPU's     $38.00 each CPU     
  8217.                 51 - 100 CPU's     $27.00 each CPU     
  8218.                101 - 150 CPU's     $21.00 each CPU     
  8219.                151 - 200 CPU's     $19.00 each CPU     
  8220.                201+ CPU's        $3250.00 one time cost
  8221.                                            
  8222.                Upgrades after the initial free upgrade are 1/25th the total
  8223.                cost of the site license itself.         
  8224.  
  8225.  
  8226.  
  8227.  
  8228.  
  8229.  
  8230.  
  8231.  
  8232.  
  8233.  
  8234.  
  8235.  
  8236.  
  8237.  
  8238.  
  8239.  
  8240.  
  8241.  
  8242.                            Bingo 3.00 Reference Manual
  8243.                                        136
  8244.  
  8245.  
  8246.  
  8247.  
  8248.                                    The Author
  8249.                                    ----------
  8250.  
  8251.           I received my M.S. in Computer Science from The Ohio State
  8252.      University in March of 1990, and am now employed by a large
  8253.      engineering/manufacturing firm in the Baltimore area.  I was born in a
  8254.      steel town in Eastern Pennsylvania, and attended The Pennsylvania
  8255.      State University as an undergraduate, graduating in May of 1988. I
  8256.      hold a first-degree Black Belt in Tae Kwon Do, and I am an avid reader
  8257.      of science-fiction, fantasy, military fiction, mythology, and just
  8258.      about any other occurance of the printed word.  Bingo was developed on
  8259.      an original IBM PC (8088!) through version 2.10d, and since on a
  8260.      Gateway 2000 386DX/25.  Since April '92, Bingo has been developed
  8261.      while running under IBM's awesome OS/2 2.0 operating system.
  8262.  
  8263.  
  8264.  
  8265.  
  8266.  
  8267.  
  8268.  
  8269.  
  8270.  
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.  
  8280.  
  8281.  
  8282.  
  8283.  
  8284.  
  8285.  
  8286.  
  8287.  
  8288.  
  8289.  
  8290.  
  8291.  
  8292.  
  8293.  
  8294.  
  8295.  
  8296.  
  8297.  
  8298.  
  8299.  
  8300.                            Bingo 3.00 Reference Manual
  8301.                                        137
  8302.  
  8303.  
  8304.  
  8305.  
  8306.                                 Acknowledgements
  8307.                                 ----------------
  8308.  
  8309.           There are many I must acknowledge for the inspiration for writing
  8310.      this program: family, friends, colleagues. In addition, I want to
  8311.      thank Borland for their excellent Turbo C compiler, which I used to
  8312.      write Bingo; IBM for making my beloved baby, lo those many years ago;
  8313.      and all the other folks who wrote software I used to create Bingo.  In
  8314.      particular, thanks to Ralf Brown for his excellent SPAWNO libraries
  8315.      which I used in this version.  Thanks to Gateway computers, for making
  8316.      my new workhorse.  Thanks to all my computer science professors, who
  8317.      instilled the knowledge to write such an application in me, often
  8318.      against my will. 
  8319.           Thanks to the members of the Columbus Computer Society (CCS),
  8320.      particularly the members of the Programmer's SIG, several of whom
  8321.      served as Beta test people during versions 1.0 to 2.0, putting their
  8322.      programs In Harm's Way as they tested features.
  8323.           Thanks to the folks at Home Box Office for running an endless
  8324.      number of truly bad movies at all hours of the night to keep me
  8325.      company on some of the more involved programming adventures.  
  8326.           Mucho thanks to my premier beta-tester, Bob Boyken, who was also
  8327.      the first registrant of version 1.1a.  Bob provided me with much
  8328.      needed time, effort, and ideas, not to mention a help file.  His
  8329.      efforts, both in using Bingo regularly, and in testing things for me
  8330.      on particular hardware combinations, was nothing short of awesome.
  8331.           Additional thanks to Rich Thompson, for looking at the earliest
  8332.      virtual-memory version of 2.10 and not cringing.  Or at least not
  8333.      cringing too much.
  8334.           Thanks to Jorge, Bradley, Alan, Mike, Pierre, and all the others
  8335.      for more positive feedback than anyone could hope for.
  8336.           Thanks to Beaker, Ernie, Cookie, and the rest of the Muppets for
  8337.      frequent sanity checks, and the Blind Blonde for her support.
  8338.           Thanks to the BedPiglet, for understanding the time involved in
  8339.      doing this, and for her smile.  Someday I am going to marry this girl. 
  8340.      Nub!
  8341.  
  8342.  
  8343.  
  8344.  
  8345.  
  8346.  
  8347.  
  8348.  
  8349.  
  8350.  
  8351.  
  8352.  
  8353.  
  8354.  
  8355.  
  8356.  
  8357.  
  8358.                            Bingo 3.00 Reference Manual
  8359.                                        138
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.                                       Index
  8366.                                       -----
  8367.  
  8368.      .CFG  . . . . . . . . . . . . . . . . . . . . . . . . . .  21, 105-107
  8369.      abort . . . . . . . . . . . . . . 27-29, 45, 60, 61, 85, 107, 110, 127
  8370.      abort_all . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 61
  8371.      again . . . . . . . . . . . 7, 26, 29, 33, 49, 52, 64, 76, 82, 84, 130
  8372.      align . . . . . . . . . . . . . . . . . . . . . . . . . . .  2, 78, 80
  8373.      ascii_table . . . . . . . . . . . . . . . . . . . . . . . . . . 37, 63
  8374.      ask  7, 27, 28, 30, 31, 36, 61, 73, 76, 77, 81, 84, 85, 105, 108, 109,
  8375.                                                      117-126, 129, 130, 131
  8376.      ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
  8377.      Association of Shareware Professionals  . . . . . . . . . . . . . .  4
  8378.      atoi  . . . . . . . . . . . . . . . . . . . . . . . . .  108, 111, 130
  8379.      b_cmd . . . . . . . . . . . . . . .  105, 108, 112, 114, 127, 130, 131
  8380.      back_space  . . . . . . . . . . . . . . . . . . . . . . . . . .  49-51
  8381.      back_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8382.      backup_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8383.      backup_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8384.      BE.EXE  . . . . . . . . . . . . . . . . . . . . . .  12-14, 23, 24, 63
  8385.      beep  . . . . . . . . . . . . . . . . . . . . . . . .  29, 30, 42, 108
  8386.      begin_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8387.      begin_of_text . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8388.      block_copy  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8389.      block_delete  . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8390.      block_load  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8391.      block_move  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8392.      block_save  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8393.      bot_of_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8394.      bottom_of_block . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8395.      bottom_of_screen  . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8396.      box_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  8397.      box_pick  . . . . . . . . . . . . . . . . . . . . . . . . . . 109, 112
  8398.      box_str . . . . . . . . . . . . . . . . . . . . . . . . . . . 109, 130
  8399.      box_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  8400.      buffer_info . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8401.      carriage  . . . . . . . . . . . . . . . . . . . . . . . . . 46, 49, 60
  8402.      center_line . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8403.      center_text . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
  8404.      chdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  8405.      Chess .  1, 3, 7, 11, 13, 17, 21, 48, 86, 88-94, 96, 98, 101, 103-108,
  8406.                                            112-114, 117, 126, 127, 128, 130
  8407.      choose_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  8408.      clean_all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8409.      clean_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
  8410.      cmd_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
  8411.      conf_auto_cut . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8412.      conf_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8413.      conf_automark . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
  8414.      conf_backspace  . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8415.  
  8416.                            Bingo 3.00 Reference Manual
  8417.                                        139
  8418.  
  8419.  
  8420.  
  8421.  
  8422.      conf_backups  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8423.      conf_bmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8424.      conf_bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8425.      conf_button_wait  . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8426.      conf_carriage . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
  8427.      conf_chess_trace  . . . . . . . . . . . . . . . . . . . . . .  48, 107
  8428.      conf_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8429.      conf_color  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
  8430.      conf_cut_stack  . . . . . . . . . . . . . . . . . . . . . . . . 43, 58
  8431.      conf_def_ext  . . . . . . . . . . . . . . . . . . . . . . . .  43, 111
  8432.      conf_delete_join  . . . . . . . . . . . . . . . . . . . . . . . 46, 50
  8433.      conf_delims . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 80
  8434.      conf_dialogue . . . . . . . . . . . . . . . . . . . . . . . . . 27, 48
  8435.      conf_eof  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41, 60
  8436.      conf_eol_display  . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8437.      conf_erronly  . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8438.      conf_exit_to_pick . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8439.      conf_insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8440.      conf_key_bios . . . . . . . . . . . . . . . . . . . . . . . .  44, 111
  8441.      conf_kill_size  . . . . . . . . . . . . . . . . . . . . . . . . 43, 58
  8442.      conf_lfs  . . . . . . . . . . . . . . . . . . . . . . . . . . . 40, 60
  8443.      conf_lines_per  . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8444.      conf_lmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8445.      conf_matching . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8446.      conf_mdelay . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 42
  8447.      conf_mouse  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8448.      conf_name_save  . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8449.      conf_prn  . . . . . . . . . . . . . . . . . . . . . . . . . 43, 45, 46
  8450.      conf_prn_eol  . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8451.      conf_prn_header . . . . . . . . . . . . . . . . . . . . . . . . . . 46
  8452.      conf_prn_lineno . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8453.      conf_profile  . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8454.      conf_rmargin  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8455.      conf_scr_save . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  8456.      conf_search . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8457.      conf_shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8458.      conf_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8459.      conf_sound  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8460.      conf_stripping  . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8461.      conf_tabsize  . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8462.      conf_timed_backups  . . . . . . . . . . . . . . . . . . . . . . . . 46
  8463.      conf_tmarg  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8464.      conf_trail  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
  8465.      conf_video_mode . . . . . . . . . . . . . . . . . . . . . . . . . . 43
  8466.      conf_wild_load  . . . . . . . . . . . . . . . . . . . . . . . . . . 46
  8467.      conf_win_close  . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  8468.      conf_word . . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 79
  8469.      conf_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  8470.      copy  5, 10, 12, 14, 44, 52-56, 58, 61, 63, 93, 102, 110, 111, 128, 133
  8471.      copy_append . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  8472.      cursor_down . . . . . . . . . . . . . . . . . . . . . . . . 34, 35, 68
  8473.  
  8474.                            Bingo 3.00 Reference Manual
  8475.                                        140
  8476.  
  8477.  
  8478.  
  8479.  
  8480.      cursor_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8481.      cursor_right  . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8482.      cursor_up . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 84
  8483.      cut . . . . . . . . . . . . . . . . . . . . . .  43, 44, 49, 51-56, 58
  8484.      cut_append  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  8485.      default_bspace  . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8486.      default_del . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8487.      define_scrap  . . . . . . . . . . . . . . . . . . . . . . . . . 64, 65
  8488.      del_bol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 58
  8489.      del_char  . . . . . . . . . . . . . . . . . . . . . . . . . . .  49-51
  8490.      del_eol . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 58
  8491.      del_line  . . . . . . . . . . . . . . . . . . . . . . . . . 49, 50, 58
  8492.      del_word_lt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8493.      del_word_rt . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 51
  8494.      delete_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8495.      detab . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1, 78
  8496.      display_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
  8497.      down_page . . . . . . . . . . . . . . . . . . . . 34, 35, 67, 108, 131
  8498.      dup_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8499.      edit_file . . . . . . . . . . . . . . . . . . . . . . . . . 57, 60, 81
  8500.      emacs_yank  . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 56
  8501.      end_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8502.      end_macro . . . . . . . . . . . . . . . . . . . . . . . . . . . 64, 66
  8503.      entab . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  1, 78
  8504.      exec_chess  . . . . . . . . . . . . . . . . . . . . . . .  21, 86, 106
  8505.      exec_command  . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
  8506.      extend_mark . . . . . . . . . . . . . . . . . . . . . . . . . . 52, 54
  8507.      fcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8508.      file  . . . 1-3, 7, 11-13, 15-17, 19-24, 28, 30-32, 34, 35, 40-46, 50,
  8509.                     52-55, 57-63, 65, 66-69, 73, 74, 77-79, 81, 82, 85, 86,
  8510.                                             105-113, 117-123, 130, 131, 138
  8511.      file_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8512.      file_autoindent . . . . . . . . . . . . . . . . . . . . . . . . .  117
  8513.      file_bspace . . . . . . . . . . . . . . . . . . . . . . . . . 117, 122
  8514.      file_changes  . . . . . . . . . . . . . . . . . . . . . . . . . .  117
  8515.      file_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . 117, 122
  8516.      file_column . . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  8517.      file_dirty  . . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  8518.      file_id_no  . . . . . . . . . . . . . . . . . . . . . . . . . 118, 119
  8519.      file_in_mark  . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  8520.      file_insmode  . . . . . . . . . . . . . . . . . . . . . . . . . .  118
  8521.      file_line . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8522.      file_matching . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8523.      file_name . . . . . . . . . . . . . . . . 105, 108, 117, 119, 120, 130
  8524.      file_new  . . . . . . . . . . . . . . . . . . . . . . . . . . 108, 119
  8525.      file_number . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
  8526.      file_path . . . . . . . . . . . . . . . . . . . . . . .  105, 120, 130
  8527.      file_rmargin  . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8528.      file_smart_tabs . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8529.      file_tabsize  . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8530.      file_timed  . . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8531.  
  8532.                            Bingo 3.00 Reference Manual
  8533.                                        141
  8534.  
  8535.  
  8536.  
  8537.  
  8538.      file_w_height . . . . . . . . . . . . . . . . . . . . . . . . . .  120
  8539.      file_w_left . . . . . . . . . . . . . . . . . . . . . . . . . 121, 131
  8540.      file_w_top  . . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8541.      file_w_width  . . . . . . . . . . . . . . . . . . . . . . . . 121, 131
  8542.      file_wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8543.      file_x  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8544.      file_y  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8545.      fill_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
  8546.      get_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  8547.      get_curr_text . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  8548.      get_fname . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  8549.      get_str . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  109
  8550.      get_text  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  8551.      get_yesno . . . . . . . . . . . . . . . . . . . . . . . . . . . .  110
  8552.      getkey  . . . . . . . . . . . . . . . . . . . . . . . .  105, 111, 130
  8553.      global  . . . . . . . . . . . . . . . 41, 42, 44, 77, 85, 90, 103, 113
  8554.      help  . . . . 1, 2, 4, 8, 12, 29, 34, 36, 58, 63, 75, 86, 92, 111, 138
  8555.      indent_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8556.      indent_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
  8557.      indent_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8558.      info  . . . . . . . . . . . . . . . . . . .  5, 29, 36, 45, 46, 55, 63
  8559.      insert_tab  . . . . . . . . . . . . . . . . . . . . . . . . . . 44, 49
  8560.      itoa  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  111
  8561.      jump  . . . . . . . . . . . . . . . . . . . . . . . . . . .  57, 67-70
  8562.      jump_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8563.      key .  1, 12, 13, 17, 19-22, 24, 26-29, 33, 34, 36, 44, 63-66, 77, 84,
  8564.                                      105, 107, 108, 111, 112, 114, 127, 131
  8565.      key_set_load  . . . . . . . . . . . . . . . . . . . . . . . . . 17, 66
  8566.      key_set_save  . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  8567.      KEYCFG  . . . . . . . . . . . . . . 12, 17, 20-22, 33, 57, 65, 84, 105
  8568.      KEYINFO . . . . . . . . . . . . . . . . . . . . . . . . . . .  22, 106
  8569.      last_error  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
  8570.      lcase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8571.      leap_backward . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
  8572.      leap_forward  . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
  8573.      line_mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
  8574.      load_file . . . . . . . . . . . . . . . . . . . . . . . . . 20, 21, 60
  8575.      load_profile  . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
  8576.      look_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  8577.      main_menu . . . . . . . . . . . . . . . . . . . . . . . . . . . 26, 63
  8578.      mark_last_found . . . . . . . . . . . . . . . . . . . . . . . . . . 77
  8579.      mark_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
  8580.      match_delim . . . . . . . . . . . . . . . . . . . . . . . . . . 45, 80
  8581.      memcpy  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  112
  8582.      modify_save . . . . . . . . . . . . . . . . . . . 20, 60, 61, 105, 130
  8583.      modify_save_all . . . . . . . . . . . . . . . . . . . . . . . . 20, 61
  8584.      Mouse . . . . . . . . . . 1, 2, 17, 19, 21, 26, 33-37, 42, 45, 69, 124
  8585.      mouse_scroll  . . . . . . . . . . . . . . . . . . . . . . .  2, 34, 69
  8586.      msg . . . . . . . . . . . . . . . . . . . . 94, 95, 101, 105, 112, 130
  8587.      name_buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 55
  8588.      new_line  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
  8589.  
  8590.                            Bingo 3.00 Reference Manual
  8591.                                        142
  8592.  
  8593.  
  8594.  
  8595.  
  8596.      next_error  . . . . . . . . . . . . . . . . . . . . . . . . 20, 57, 59
  8597.      next_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8598.      next_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8599.      onekey_def  . . . . . . . . . . . . . . . . . . . . . . . . . . 64, 65
  8600.      paste . . . . . . . . . . . . . . . . . 27, 43, 52, 53, 55, 56, 58, 59
  8601.      paste_kill  . . . . . . . . . . . . . . . . . . . . . . 53, 56, 58, 59
  8602.      paste_replace . . . . . . . . . . . . . . . . . . . . . . . . . 52, 55
  8603.      pick_exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
  8604.      pick_file . . . . . . . . . . . . . . . . . . . . . . . . . . 109, 112
  8605.      place_mark  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8606.      point_mark  . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 53
  8607.      prev_error  . . . . . . . . . . . . . . . . . . . . . . . . . . 57, 59
  8608.      prev_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8609.      prev_word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8610.      print_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  8611.      put_char  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  8612.      put_text  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  8613.      put_text_curr . . . . . . . . . . . . . . . . . . . . . . . . . .  113
  8614.      query_quote . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
  8615.      quit  . . . . . . . . . . . . . . . . . 28, 38, 45, 60, 61, 77, 84, 85
  8616.      quit_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8617.      quit_and_save_status  . . . . . . . . . . . . . . . . . . . . . 38, 85
  8618.      reform_para . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8619.      rename_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  8620.      repeat  . . . . . . . . . . . . . .  1, 2, 64, 76, 79, 84, 86, 99, 131
  8621.      repeat_last   . . . . . . . . . . . . . . . . . . . . . . . . . 84, 86
  8622.      replace . . . . . . . . . . . . . 1, 2, 20, 41, 52, 55, 74-77, 85, 124
  8623.      report_bsize  . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  8624.      restore_line  . . . . . . . . . . . . . . . . . . . . . . . . . 58, 59
  8625.      rotate_kill . . . . . . . . . . . . . . . . . . . . . . . . . . 58, 59
  8626.      run . . . . . . . 3, 12, 13, 21, 23, 24, 38, 66, 86, 105-107, 113, 130
  8627.      run_macro_file  . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  8628.      save_all  . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 61
  8629.      save_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  8630.      save_settings . . . . . . . . . . . . . . . . . . . . . . . . . 24, 40
  8631.      scrap   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
  8632.      scroll_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8633.      scroll_left . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8634.      scroll_right  . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8635.      scroll_up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8636.      search  . . . . . . . . . . . . . 1, 2, 20, 30, 41, 74-77, 79, 85, 124
  8637.      search_macro  . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
  8638.      send_ff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  8639.      send_lf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  8640.      send_sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
  8641.      setup_err_parse . . . . . . . . . . . . . . . . . . . . . . 20, 57, 59
  8642.      sformat   . . . . . . . . . . . . . . . . . . . . . . . . . . . .  114
  8643.      shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71, 72
  8644.      shift_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8645.      show_marks  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  8646.      single_key_load . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  8647.  
  8648.                            Bingo 3.00 Reference Manual
  8649.                                        143
  8650.  
  8651.  
  8652.  
  8653.  
  8654.      single_key_save . . . . . . . . . . . . . . . . . . . . . . . . 65, 66
  8655.      snap_to_mouse_xy  . . . . . . . . . . . . . . . . . . . . . . . 34, 69
  8656.      sort_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8657.      str . . . . . . . . . . . . . . . . . . . . .  108, 109, 112, 114, 130
  8658.      strcat  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8659.      strcmp  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8660.      strcpy  . . . . . . . . . . . . .  93-95, 102, 105, 111, 114, 115, 130
  8661.      strip_highbit . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8662.      strlen  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8663.      strndx  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  115
  8664.      swap_buf_and_block  . . . . . . . . . . . . . . . . . . . . . . . . 55
  8665.      swap_execute  . . . . . . . . . . . . . . . . . . 20, 71, 85, 108, 114
  8666.      swap_shell  . . . . . . . . . . . . . . . . . . . . . . . . . . 71, 72
  8667.      switch_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
  8668.      sys_autoindent  . . . . . . . . . . . . . . . . . . . . . . . . .  121
  8669.      sys_autostrip . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8670.      sys_autotrail . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8671.      sys_backups . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8672.      sys_bounce  . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8673.      sys_bspace  . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8674.      sys_carraige  . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8675.      sys_cmode . . . . . . . . . . . . . . . . . . . . . . . . . . . .  122
  8676.      sys_cols  . . . . . . . . . . . . . . . . . . . . . . . . . . 123, 131
  8677.      sys_delete  . . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8678.      sys_extensions  . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8679.      sys_fcount  . . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8680.      sys_inmacro . . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8681.      sys_insmode . . . . . . . . . . . . . . . . . . . . . . . . . . .  123
  8682.      sys_matching  . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8683.      sys_mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8684.      sys_rdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8685.      sys_recording . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8686.      sys_rmargin . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8687.      sys_rows  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8688.      sys_sdefs . . . . . . . . . . . . . . . . . . . . . . . . . . . .  124
  8689.      sys_smart_tabs  . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8690.      sys_tabsize . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8691.      sys_timed . . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8692.      sys_word_delim  . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8693.      sys_wordwrap  . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8694.      sys_zoom  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  125
  8695.      threekey_def  . . . . . . . . . . . . . . . . . . . . . . . . . 64, 65
  8696.      time_stamp  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
  8697.      toggle_autoindent . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8698.      toggle_box_draw . . . . . . . . . . . . . . . . . . . . . . . . . . 84
  8699.      toggle_cmode  . . . . . . . . . . . . . . . . . . . . . . . . . 40, 50
  8700.      toggle_display  . . . . . . . . . . . . . . . . . . . . . . . . . . 86
  8701.      toggle_ins  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8702.      toggle_wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  8703.      top_of_block  . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
  8704.      top_of_file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8705.  
  8706.                            Bingo 3.00 Reference Manual
  8707.                                        144
  8708.  
  8709.  
  8710.  
  8711.  
  8712.      top_of_screen . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8713.      twokey_def  . . . . . . . . . . . . . . . . . . . . . . . . . . 64, 65
  8714.      ucase_block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8715.      undefine_key  . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
  8716.      unkill  . . . . . . . . . . . . . . . . . . . . . . 49, 53, 56, 58, 59
  8717.      unmark  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54, 77
  8718.      up_page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
  8719.      update_display  . . . . . . . . . . . . . . . . . . . . . . . 112, 116
  8720.      valid_name  . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
  8721.      version . 1-7, 10, 15, 16, 20, 24, 31, 40, 42, 46, 57, 60, 63, 71, 73,
  8722.                                              74, 84, 125, 132, 133, 136-138
  8723.      version_info  . . . . . . . . . . . . . . . . . . . . . . . . .  5, 63
  8724.      vertical_mark   . . . . . . . . . . . . . . . . . . . . . . . . . . 54
  8725.      window_bottom . . . . . . . . . . . . . . . . . . . . . . . . . 20, 82
  8726.      window_close  . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8727.      window_edit . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82
  8728.      window_load . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8729.      window_next . . . . . . . . . . . . . . . . . . . . . . . . .  82, 131
  8730.      window_one  . . . . . . . . . . . . . . . . . . . . . . . . 20, 81, 82
  8731.      window_previous . . . . . . . . . . . . . . . . . . . . .  20, 82, 131
  8732.      window_resize . . . . . . . . . . . . . . . . . . . . . .  20, 83, 112
  8733.      window_split  . . . . . . . . . . . . . . . . . . . . . . . . . 20, 82
  8734.      window_top  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
  8735.      window_vertical . . . . . . . . . . . . . . . . . . . . . . . . 81, 82
  8736.      window_zoom . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82
  8737.      word_count  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
  8738.      write_profile . . . . . . . . . . . . . . . . . . . . . . . .  86, 106
  8739.      ws_size . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  126
  8740.      zap_file  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
  8741.  
  8742.  
  8743.  
  8744.  
  8745.  
  8746.  
  8747.  
  8748.  
  8749.  
  8750.  
  8751.  
  8752.  
  8753.  
  8754.  
  8755.  
  8756.  
  8757.  
  8758.  
  8759.  
  8760.  
  8761.  
  8762.  
  8763.  
  8764.                            Bingo 3.00 Reference Manual
  8765.                                        145
  8766.  
  8767.